mirror of
				https://github.com/amevarashi/RJW-Sexperience.git
				synced 2024-08-14 23:54:08 +00:00 
			
		
		
		
	1.0.1.7
This commit is contained in:
		
							parent
							
								
									1326f8bd20
								
							
						
					
					
						commit
						5f9ab6d62a
					
				
					 27 changed files with 567 additions and 79 deletions
				
			
		| 
						 | 
				
			
			@ -1,7 +1,7 @@
 | 
			
		|||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 | 
			
		||||
<Manifest>
 | 
			
		||||
	<identifier>RJW Sexperience</identifier>
 | 
			
		||||
	<version>1.0.1.6</version>
 | 
			
		||||
	<version>1.0.1.7</version>
 | 
			
		||||
	<dependencies>
 | 
			
		||||
	</dependencies>
 | 
			
		||||
	<incompatibleWith />
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										16
									
								
								Defs/PawnRelationDefs/PawnRelations_Bastard.xml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								Defs/PawnRelationDefs/PawnRelations_Bastard.xml
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,16 @@
 | 
			
		|||
<?xml version="1.0" encoding="utf-8" ?>
 | 
			
		||||
<Defs>
 | 
			
		||||
 | 
			
		||||
  <PawnRelationDef>
 | 
			
		||||
    <workerClass>RJWSexperience.PawnRelationWorker_Bastard</workerClass>
 | 
			
		||||
    <defName>Bastard</defName>
 | 
			
		||||
    <label>bastard</label>
 | 
			
		||||
    <labelFemale>bastard</labelFemale>
 | 
			
		||||
    <importance>185</importance>
 | 
			
		||||
    <opinionOffset>-10</opinionOffset>
 | 
			
		||||
    <generationChanceFactor>0.0</generationChanceFactor>
 | 
			
		||||
    <implied>true</implied>
 | 
			
		||||
    <familyByBloodRelation>true</familyByBloodRelation>
 | 
			
		||||
  </PawnRelationDef>
 | 
			
		||||
  
 | 
			
		||||
</Defs>
 | 
			
		||||
							
								
								
									
										42
									
								
								Defs/PreceptDefs/Precepts_BabyFaction.xml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								Defs/PreceptDefs/Precepts_BabyFaction.xml
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,42 @@
 | 
			
		|||
<?xml version="1.0" encoding="utf-8" ?>
 | 
			
		||||
<Defs>
 | 
			
		||||
 | 
			
		||||
  <!-- Issues -->
 | 
			
		||||
  <IssueDef>
 | 
			
		||||
    <defName>BabyFaction</defName>
 | 
			
		||||
    <label>baby faction</label>
 | 
			
		||||
    <iconPath>UI/Issues/Birth</iconPath>
 | 
			
		||||
  </IssueDef>
 | 
			
		||||
 | 
			
		||||
  <!-- Precepts -->
 | 
			
		||||
 | 
			
		||||
  <PreceptDef>
 | 
			
		||||
    <defName>BabyFaction_AlwaysMother</defName>
 | 
			
		||||
    <issue>BabyFaction</issue>
 | 
			
		||||
    <label>always mother(default)</label>
 | 
			
		||||
    <description>New born babies always follow mother's faction and ideology.</description>
 | 
			
		||||
    <impact>Low</impact>
 | 
			
		||||
    <displayOrderInIssue>50</displayOrderInIssue>
 | 
			
		||||
    <displayOrderInImpact>1000</displayOrderInImpact>
 | 
			
		||||
  </PreceptDef>
 | 
			
		||||
 | 
			
		||||
  <PreceptDef>
 | 
			
		||||
    <defName>BabyFaction_AlwaysFather</defName>
 | 
			
		||||
    <issue>BabyFaction</issue>
 | 
			
		||||
    <label>always father</label>
 | 
			
		||||
    <description>New born babies always follow father's faction and ideology(if exists).</description>
 | 
			
		||||
    <impact>Low</impact>
 | 
			
		||||
    <displayOrderInIssue>40</displayOrderInIssue>
 | 
			
		||||
    <displayOrderInImpact>1000</displayOrderInImpact>
 | 
			
		||||
  </PreceptDef>
 | 
			
		||||
 | 
			
		||||
  <PreceptDef>
 | 
			
		||||
    <defName>BabyFaction_AlwaysColony</defName>
 | 
			
		||||
    <issue>BabyFaction</issue>
 | 
			
		||||
    <label>always colony</label>
 | 
			
		||||
    <description>New born babies are always player's faction and ideology.</description>
 | 
			
		||||
    <impact>Low</impact>
 | 
			
		||||
    <displayOrderInIssue>30</displayOrderInIssue>
 | 
			
		||||
    <displayOrderInImpact>1000</displayOrderInImpact>
 | 
			
		||||
  </PreceptDef>
 | 
			
		||||
</Defs>
 | 
			
		||||
							
								
								
									
										62
									
								
								Defs/PreceptDefs/Precepts_SocialAffection.xml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								Defs/PreceptDefs/Precepts_SocialAffection.xml
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,62 @@
 | 
			
		|||
<?xml version="1.0" encoding="utf-8" ?>
 | 
			
		||||
<Defs>
 | 
			
		||||
 | 
			
		||||
  <!-- Issues -->
 | 
			
		||||
  <IssueDef>
 | 
			
		||||
    <defName>SocialAffection</defName>
 | 
			
		||||
    <label>social affection</label>
 | 
			
		||||
    <iconPath>UI/Issues/SocialAffection</iconPath>
 | 
			
		||||
  </IssueDef>
 | 
			
		||||
 | 
			
		||||
  <!-- Precepts -->
 | 
			
		||||
 | 
			
		||||
  <PreceptDef>
 | 
			
		||||
    <defName>SocialAffection_Normal</defName>
 | 
			
		||||
    <issue>SocialAffection</issue>
 | 
			
		||||
    <label>normal(vanilla)</label>
 | 
			
		||||
    <description>Just normal.</description>
 | 
			
		||||
    <impact>Low</impact>
 | 
			
		||||
    <displayOrderInIssue>50</displayOrderInIssue>
 | 
			
		||||
    <displayOrderInImpact>1000</displayOrderInImpact>
 | 
			
		||||
  </PreceptDef>
 | 
			
		||||
 | 
			
		||||
  <PreceptDef>
 | 
			
		||||
    <defName>SocialAffection_Small</defName>
 | 
			
		||||
    <issue>SocialAffection</issue>
 | 
			
		||||
    <label>only immediate family</label>
 | 
			
		||||
    <description>Care about only immediate family.</description>
 | 
			
		||||
    <impact>Medium</impact>
 | 
			
		||||
    <displayOrderInIssue>40</displayOrderInIssue>
 | 
			
		||||
    <displayOrderInImpact>1000</displayOrderInImpact>
 | 
			
		||||
  </PreceptDef>
 | 
			
		||||
 | 
			
		||||
  <PreceptDef>
 | 
			
		||||
    <defName>SocialAffection_OnlyFamily</defName>
 | 
			
		||||
    <issue>SocialAffection</issue>
 | 
			
		||||
    <label>only family</label>
 | 
			
		||||
    <description>Don't care about non-family memeber's tragedy.</description>
 | 
			
		||||
    <impact>Medium</impact>
 | 
			
		||||
    <displayOrderInIssue>30</displayOrderInIssue>
 | 
			
		||||
    <displayOrderInImpact>1000</displayOrderInImpact>
 | 
			
		||||
  </PreceptDef>
 | 
			
		||||
 | 
			
		||||
  <PreceptDef>
 | 
			
		||||
    <defName>SocialAffection_Dry</defName>
 | 
			
		||||
    <issue>SocialAffection</issue>
 | 
			
		||||
    <label>not family</label>
 | 
			
		||||
    <description>Don't care about family memeber's tragedy.</description>
 | 
			
		||||
    <impact>High</impact>
 | 
			
		||||
    <displayOrderInIssue>20</displayOrderInIssue>
 | 
			
		||||
    <displayOrderInImpact>1000</displayOrderInImpact>
 | 
			
		||||
  </PreceptDef>
 | 
			
		||||
 | 
			
		||||
  <PreceptDef>
 | 
			
		||||
    <defName>SocialAffection_Psychopath</defName>
 | 
			
		||||
    <issue>SocialAffection</issue>
 | 
			
		||||
    <label>Psychopath</label>
 | 
			
		||||
    <description>Don't care about others.</description>
 | 
			
		||||
    <impact>High</impact>
 | 
			
		||||
    <displayOrderInIssue>10</displayOrderInIssue>
 | 
			
		||||
    <displayOrderInImpact>1000</displayOrderInImpact>
 | 
			
		||||
  </PreceptDef>
 | 
			
		||||
</Defs>
 | 
			
		||||
| 
						 | 
				
			
			@ -14,7 +14,7 @@
 | 
			
		|||
    <defName>Gangbang</defName>
 | 
			
		||||
    <ritualBehavior>Gangbang</ritualBehavior>
 | 
			
		||||
    <shortDescOverride>gangbang</shortDescOverride>
 | 
			
		||||
    <descOverride>A ritualistic gangbang. The organizer will give a speech to excite the crowd, then fuck the prisoner. If the organizer cannot fuck victim, the ritual will be canceled.</descOverride>
 | 
			
		||||
    <descOverride>A ritualistic gangbang. The organizer will give a speech to excite the crowd, then fuck the victim. If the organizer cannot fuck victim, the ritual will be canceled.</descOverride>
 | 
			
		||||
    <iconPathOverride>UI/Issues/Gangbang</iconPathOverride>
 | 
			
		||||
    <ritualOnlyForIdeoMembers>false</ritualOnlyForIdeoMembers>
 | 
			
		||||
    <patternGroupTag/>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										36
									
								
								Defs/PreconfiguredIdeos/IdeoPresetDefs_sex.xml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								Defs/PreconfiguredIdeos/IdeoPresetDefs_sex.xml
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,36 @@
 | 
			
		|||
<?xml version="1.0" encoding="utf-8" ?>
 | 
			
		||||
<Defs>
 | 
			
		||||
  <IdeoPresetDef>
 | 
			
		||||
    <defName>Animal_Breeders</defName>
 | 
			
		||||
    <label>animal breeders</label>
 | 
			
		||||
    <description>Animals are our better half.</description>
 | 
			
		||||
    <categoryDef>Intense</categoryDef>
 | 
			
		||||
    <memes>
 | 
			
		||||
      <li>AnimalPersonhood</li>
 | 
			
		||||
      <li>Zoophile</li>
 | 
			
		||||
    </memes>
 | 
			
		||||
  </IdeoPresetDef>
 | 
			
		||||
 | 
			
		||||
  <IdeoPresetDef>
 | 
			
		||||
    <defName>Savage_Rapist_Brigands</defName>
 | 
			
		||||
    <label>savage rapist brigands</label>
 | 
			
		||||
    <description>All of them are ours.</description>
 | 
			
		||||
    <categoryDef>Intense</categoryDef>
 | 
			
		||||
    <memes>
 | 
			
		||||
      <li>Rapist</li>
 | 
			
		||||
      <li>Nudism</li>
 | 
			
		||||
      <li>Raider</li>
 | 
			
		||||
    </memes>
 | 
			
		||||
  </IdeoPresetDef>
 | 
			
		||||
 | 
			
		||||
  <IdeoPresetDef>
 | 
			
		||||
    <defName>Hentai_Tribe</defName>
 | 
			
		||||
    <label>hentai tribe</label>
 | 
			
		||||
    <categoryDef>Intense</categoryDef>
 | 
			
		||||
    <description>Impregnate.</description>
 | 
			
		||||
    <memes>
 | 
			
		||||
      <li>MaleSupremacy</li>
 | 
			
		||||
      <li>Rapist</li>
 | 
			
		||||
    </memes>
 | 
			
		||||
  </IdeoPresetDef>
 | 
			
		||||
</Defs>
 | 
			
		||||
| 
						 | 
				
			
			@ -147,7 +147,7 @@
 | 
			
		|||
        <id>animal</id>
 | 
			
		||||
        <maxCount>10</maxCount>
 | 
			
		||||
        <required>True</required>
 | 
			
		||||
        <missingDesc>a breedable animal.</missingDesc>
 | 
			
		||||
        <missingDesc>a breedable animal</missingDesc>
 | 
			
		||||
        <countsAsParticipant>false</countsAsParticipant>
 | 
			
		||||
      </li>
 | 
			
		||||
    </roles>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -6,6 +6,11 @@
 | 
			
		|||
  <SlaveStatFactor>Slave: x{0}%</SlaveStatFactor>
 | 
			
		||||
  <SlaveStatFactorDefault>Not Slave: x100%</SlaveStatFactorDefault>
 | 
			
		||||
  <MemeStatFactor>Meme: x{0}%</MemeStatFactor>
 | 
			
		||||
  <RSVictimCondition>slave, prisoner, submissive gender only</RSVictimCondition>
 | 
			
		||||
  <RSBreederCondition>improper animal: cannot breed or forbidden by precepts</RSBreederCondition>
 | 
			
		||||
  <RSNotHuman>not human</RSNotHuman>
 | 
			
		||||
  <RSNotAnimal>not animal</RSNotAnimal>
 | 
			
		||||
  <RSShouldCanFuck>capable of sex is required</RSShouldCanFuck>
 | 
			
		||||
 | 
			
		||||
  <RSOption_1_Label>Enable record randomizer</RSOption_1_Label>
 | 
			
		||||
  <RSOption_1_Desc>Randomize pawn's sex records.</RSOption_1_Desc>
 | 
			
		||||
| 
						 | 
				
			
			@ -21,8 +26,8 @@
 | 
			
		|||
  <RSOption_6_Desc>Set average sex count.</RSOption_6_Desc>
 | 
			
		||||
  <RSOption_7_Label>Enable slaves get raped experience</RSOption_7_Label>
 | 
			
		||||
  <RSOption_7_Desc>Slaves will have experience of being raped</RSOption_7_Desc>
 | 
			
		||||
  <RSOption_8_Label></RSOption_8_Label>
 | 
			
		||||
  <RSOption_8_Desc> </RSOption_8_Desc>
 | 
			
		||||
  <RSOption_8_Label>Lust Limit</RSOption_8_Label>
 | 
			
		||||
  <RSOption_8_Desc>Set limitation of lust.
If absolute value of lust close to or larger than this value, lust will be less likely to change.</RSOption_8_Desc>
 | 
			
		||||
  <RSOption_9_Label></RSOption_9_Label>
 | 
			
		||||
  <RSOption_9_Desc> </RSOption_9_Desc>
 | 
			
		||||
  <RSOption_10_Label></RSOption_10_Label>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2,20 +2,20 @@
 | 
			
		|||
<LanguageData>
 | 
			
		||||
  <Zoophile.label>수간</Zoophile.label>
 | 
			
		||||
  <Zoophile.description>동물박이들</Zoophile.description>
 | 
			
		||||
  <Zoophile.descriptionMaker.rules.rulesStrings.0>creation(tag=meme_Zoophile)        ->[deity0_name]는 동물과 교미하는것을 즐겼습니다.</Zoophile.descriptionMaker.rules.rulesStrings.0>
 | 
			
		||||
  <Zoophile.descriptionMaker.rules.rulesStrings.1>episode(uses=1,tag=meme_Zoophile)  ->[deity0_name]는 모두에게 말했습니다, "Sigmar forbids this!"</Zoophile.descriptionMaker.rules.rulesStrings.1>
 | 
			
		||||
  <Zoophile.descriptionMaker.rules.rulesStrings.2>setup(tag=meme_Zoophile)           ->어느날, [founderName]은(는) 너무 발정이나서 동물을 따먹었고 그것을 좋아하게 되었습니다.</Zoophile.descriptionMaker.rules.rulesStrings.2>
 | 
			
		||||
  <Zoophile.descriptionMaker.rules.rulesStrings.3>story(uses=1,tag=meme_Zoophile)    ->동물들을 퍼뜨리기 위해, [founderName]은(는) 동물과 교미하고 다니기 시작했습니다.</Zoophile.descriptionMaker.rules.rulesStrings.3>
 | 
			
		||||
  <Zoophile.descriptionMaker.rules.rulesStrings.4>lessonIntro(tag=meme_Zoophile)         ->어느날, 나는 동물과 섹스했습니다. 그리고 사람보다 훨씬 나았습니다!</Zoophile.descriptionMaker.rules.rulesStrings.4>
 | 
			
		||||
  <Zoophile.descriptionMaker.rules.rulesStrings.5>lesson(tag=meme_Zoophile)              ->오직 동물만 나를 만족시킬수 있습니다.</Zoophile.descriptionMaker.rules.rulesStrings.5>
 | 
			
		||||
  <Zoophile.descriptionMaker.rules.rulesStrings.6>lessonReinforcement(tag=meme_Zoophile) ->동물과 교미하는것은 영원한 행복입니다.</Zoophile.descriptionMaker.rules.rulesStrings.6>
 | 
			
		||||
  <Zoophile.descriptionMaker.rules.rulesStrings.7>archistBasis(tag=meme_Zoophile)    ->초월주의자들은 항상 궁극의 쾌락을 찾고 있었습니다.</Zoophile.descriptionMaker.rules.rulesStrings.7>
 | 
			
		||||
  <Zoophile.descriptionMaker.rules.rulesStrings.8>archistFact(tag=meme_Zoophile)     ->그것은 동물과 교미하는 것이었습니다..</Zoophile.descriptionMaker.rules.rulesStrings.8>
 | 
			
		||||
  <Zoophile.descriptionMaker.rules.rulesStrings.9>archistProphecy(tag=meme_Zoophile) ->[inTheEnd], 초월공학은 이종간 번식을 가능하게 했습니다. 이것이 그들을 궁극의 쾌락으로 인도할지도 모릅니다.</Zoophile.descriptionMaker.rules.rulesStrings.9>
 | 
			
		||||
  <Zoophile.descriptionMaker.rules.rulesStrings.10>animistFact(tag=meme_Zoophile)     ->가장 강력한 영혼은 짐승의 것입니다, 그리고 짐승의 영혼은 짐승에게 지배받지 않는 한 날뛸것입니다.</Zoophile.descriptionMaker.rules.rulesStrings.10>
 | 
			
		||||
  <Zoophile.descriptionMaker.rules.rulesStrings.11>animistProphecy(tag=meme_Zoophile) ->[itIsSaid] 그 강력한 파괴의 영혼은 우주의 파멸을 찾아다닐 것입니다. 하지만 인간에게서 태어난 짐승이 [relic0_name]의 힘을 사용하여 파괴자를 파괴할 것입니다.</Zoophile.descriptionMaker.rules.rulesStrings.11>
 | 
			
		||||
  <Zoophile.generalRules.rulesStrings.0>memeAdjective->수간</Zoophile.generalRules.rulesStrings.0>
 | 
			
		||||
  <Zoophile.generalRules.rulesStrings.1>memeAdjective->수간</Zoophile.generalRules.rulesStrings.1>
 | 
			
		||||
  <Zoophile.descriptionMaker.rules.rulesStrings.0>creation(tag=meme_Zoophile)        ->[deity0_name]께서는 동물과 교미하는것을 즐기셨느니라.</Zoophile.descriptionMaker.rules.rulesStrings.0>
 | 
			
		||||
  <Zoophile.descriptionMaker.rules.rulesStrings.1>episode(uses=1,tag=meme_Zoophile)  ->[deity0_name]께서 모두에게 이르노니, "Sigmar forbids this!"</Zoophile.descriptionMaker.rules.rulesStrings.1>
 | 
			
		||||
  <Zoophile.descriptionMaker.rules.rulesStrings.2>setup(tag=meme_Zoophile)           ->어느날, [founderName]께서는 너무 발정이나서 동물을 따먹으셨고 그것을 좋아하게 되셨다.</Zoophile.descriptionMaker.rules.rulesStrings.2>
 | 
			
		||||
  <Zoophile.descriptionMaker.rules.rulesStrings.3>story(uses=1,tag=meme_Zoophile)    ->동물들을 퍼뜨리기 위해, [founderName]께서는 동물과 교미하고 다니기 시작하셨다.</Zoophile.descriptionMaker.rules.rulesStrings.3>
 | 
			
		||||
  <Zoophile.descriptionMaker.rules.rulesStrings.4>lessonIntro(tag=meme_Zoophile)         ->어느날, 나는 동물과 섹스했다. 그리고 그건 사람보다 훨씬 좋았다!</Zoophile.descriptionMaker.rules.rulesStrings.4>
 | 
			
		||||
  <Zoophile.descriptionMaker.rules.rulesStrings.5>lesson(tag=meme_Zoophile)              ->오직 동물만 나를 만족시킬수 있을것이다.</Zoophile.descriptionMaker.rules.rulesStrings.5>
 | 
			
		||||
  <Zoophile.descriptionMaker.rules.rulesStrings.6>lessonReinforcement(tag=meme_Zoophile) ->동물과 교미하는것은 영원한 행복이다.</Zoophile.descriptionMaker.rules.rulesStrings.6>
 | 
			
		||||
  <Zoophile.descriptionMaker.rules.rulesStrings.7>archistBasis(tag=meme_Zoophile)    ->초월은 궁극의 쾌락이다.</Zoophile.descriptionMaker.rules.rulesStrings.7>
 | 
			
		||||
  <Zoophile.descriptionMaker.rules.rulesStrings.8>archistFact(tag=meme_Zoophile)     ->그것은 동물과 교미하는 것이다.</Zoophile.descriptionMaker.rules.rulesStrings.8>
 | 
			
		||||
  <Zoophile.descriptionMaker.rules.rulesStrings.9>archistProphecy(tag=meme_Zoophile) ->[inTheEnd], 초월공학은 이종간 번식을 가능하게 했다. 이것이 그들을 궁극의 쾌락으로 인도할 수 있을것이다.</Zoophile.descriptionMaker.rules.rulesStrings.9>
 | 
			
		||||
  <Zoophile.descriptionMaker.rules.rulesStrings.10>animistFact(tag=meme_Zoophile)     ->가장 강력한 영혼은 짐승의 것이다, 그리고 짐승의 영혼은 짐승에게 지배받지 않는 한 계속해서 날뛸것이다.</Zoophile.descriptionMaker.rules.rulesStrings.10>
 | 
			
		||||
  <Zoophile.descriptionMaker.rules.rulesStrings.11>animistProphecy(tag=meme_Zoophile) ->[itIsSaid] 그 강력한 파괴의 영혼은 우주의 파멸을 찾아다닐 것이다. 하지만 인간에게서 태어난 짐승이 [relic0_name]의 힘을 사용하여 파괴자를 파괴할 것이다.</Zoophile.descriptionMaker.rules.rulesStrings.11>
 | 
			
		||||
  <Zoophile.generalRules.rulesStrings.0>memeAdjective->수간하는</Zoophile.generalRules.rulesStrings.0>
 | 
			
		||||
  <Zoophile.generalRules.rulesStrings.1>memeAdjective->수간의</Zoophile.generalRules.rulesStrings.1>
 | 
			
		||||
  <Zoophile.generalRules.rulesStrings.2>memeHyphenPrefix->수간</Zoophile.generalRules.rulesStrings.2>
 | 
			
		||||
  <Zoophile.generalRules.rulesStrings.3>memeConcept->수태</Zoophile.generalRules.rulesStrings.3>
 | 
			
		||||
  <Zoophile.generalRules.rulesStrings.4>memeConcept->수간</Zoophile.generalRules.rulesStrings.4>
 | 
			
		||||
| 
						 | 
				
			
			@ -32,25 +32,25 @@
 | 
			
		|||
 | 
			
		||||
  <Rapist.label>강간</Rapist.label>
 | 
			
		||||
  <Rapist.description>강간은 최고야</Rapist.description>
 | 
			
		||||
  <Rapist.descriptionMaker.rules.rulesStrings.0>creation(tag=meme_Rapist)        ->[deity0_name]는 강간을 사랑합니다.</Rapist.descriptionMaker.rules.rulesStrings.0>
 | 
			
		||||
  <Rapist.descriptionMaker.rules.rulesStrings.1>episode(uses=1,tag=meme_Rapist)  ->[deity0_name]는 복상사 할때까지 강간하다 죽었습니다.</Rapist.descriptionMaker.rules.rulesStrings.1>
 | 
			
		||||
  <Rapist.descriptionMaker.rules.rulesStrings.2>setup(tag=meme_Rapist)           ->[founderName]은(는) 항상 발정나있습니다.</Rapist.descriptionMaker.rules.rulesStrings.2>
 | 
			
		||||
  <Rapist.descriptionMaker.rules.rulesStrings.3>story(uses=1,tag=meme_Rapist)    ->[founderName]은(는) 모두를 강간했습니다. 아무도 [founderName]을(를) 멈출수 없었습니다. [founderName]은(는) 행성을 강간하려다 죽었습니다.</Rapist.descriptionMaker.rules.rulesStrings.3>
 | 
			
		||||
  <Rapist.descriptionMaker.rules.rulesStrings.0>creation(tag=meme_Rapist)        ->[deity0_name]께서 강간을 사랑하시나니.</Rapist.descriptionMaker.rules.rulesStrings.0>
 | 
			
		||||
  <Rapist.descriptionMaker.rules.rulesStrings.1>episode(uses=1,tag=meme_Rapist)  ->[deity0_name]께서는 복상사 할때까지 강간하다 죽으셨느니라.</Rapist.descriptionMaker.rules.rulesStrings.1>
 | 
			
		||||
  <Rapist.descriptionMaker.rules.rulesStrings.2>setup(tag=meme_Rapist)           ->[founderName]께서는 항상 발정나있으셨다.</Rapist.descriptionMaker.rules.rulesStrings.2>
 | 
			
		||||
  <Rapist.descriptionMaker.rules.rulesStrings.3>story(uses=1,tag=meme_Rapist)    ->[founderName]께서는 모두를 강간하셨다. 아무도 [founderName]을(를) 멈출수 없었다. [founderName]께서는 행성을 강간하려다 죽으셨다.</Rapist.descriptionMaker.rules.rulesStrings.3>
 | 
			
		||||
  <Rapist.descriptionMaker.rules.rulesStrings.4>lessonIntro(tag=meme_Rapist)         ->강간은 최고야! 강간은 최고야! 강간은 최고야!</Rapist.descriptionMaker.rules.rulesStrings.4>
 | 
			
		||||
  <Rapist.descriptionMaker.rules.rulesStrings.5>lesson(tag=meme_Rapist)              ->강간은 최고야! 강간은 최고야! 강간은 최고야! 강간은 최고야!</Rapist.descriptionMaker.rules.rulesStrings.5>
 | 
			
		||||
  <Rapist.descriptionMaker.rules.rulesStrings.6>lessonReinforcement(tag=meme_Rapist) ->강간은 최고야! 강간은 최고야! 강간은 최고야! 강간은 최고야! 강간은 최고야!</Rapist.descriptionMaker.rules.rulesStrings.6>
 | 
			
		||||
  <Rapist.descriptionMaker.rules.rulesStrings.7>archistBasis(tag=meme_Rapist)    ->인간의 역사는 강간의 역사입니다.</Rapist.descriptionMaker.rules.rulesStrings.7>
 | 
			
		||||
  <Rapist.descriptionMaker.rules.rulesStrings.8>archistFact(tag=meme_Rapist)     ->초월공학 조차도 강간범들을 막지는 못했습니다.</Rapist.descriptionMaker.rules.rulesStrings.8>
 | 
			
		||||
  <Rapist.descriptionMaker.rules.rulesStrings.9>archistProphecy(tag=meme_Rapist) ->[inTheEnd], 강간범들은 절대 강간을 멈추지 않을겁니다.</Rapist.descriptionMaker.rules.rulesStrings.9>
 | 
			
		||||
  <Rapist.descriptionMaker.rules.rulesStrings.10>animistFact(tag=meme_Rapist)     ->가장 강력한 영혼을 가진 것은 강간범들입니다. 그리고 그들은 모두를 강간할것입니다.</Rapist.descriptionMaker.rules.rulesStrings.10>
 | 
			
		||||
  <Rapist.descriptionMaker.rules.rulesStrings.11>animistProphecy(tag=meme_Rapist) ->[itIsSaid]  그 강력한 파괴의 영혼은 우주의 파멸을 찾아다닐 것입니다. 하지만 백만번을 강간한 강간범이 [relic0_name]의 힘을 사용하여 파괴자를 강간할 것입니다.</Rapist.descriptionMaker.rules.rulesStrings.11>
 | 
			
		||||
  <Rapist.descriptionMaker.rules.rulesStrings.7>archistBasis(tag=meme_Rapist)    ->인간의 역사는 강간의 역사이다.</Rapist.descriptionMaker.rules.rulesStrings.7>
 | 
			
		||||
  <Rapist.descriptionMaker.rules.rulesStrings.8>archistFact(tag=meme_Rapist)     ->초월공학 조차도 강간범들을 막을수 없었다.</Rapist.descriptionMaker.rules.rulesStrings.8>
 | 
			
		||||
  <Rapist.descriptionMaker.rules.rulesStrings.9>archistProphecy(tag=meme_Rapist) ->[inTheEnd], 강간범들은 절대 강간을 멈추지 않을것이다.</Rapist.descriptionMaker.rules.rulesStrings.9>
 | 
			
		||||
  <Rapist.descriptionMaker.rules.rulesStrings.10>animistFact(tag=meme_Rapist)     ->가장 강력한 영혼을 가진 것은 강간범들이다. 그리고 그들은 모두를 강간할것이다.</Rapist.descriptionMaker.rules.rulesStrings.10>
 | 
			
		||||
  <Rapist.descriptionMaker.rules.rulesStrings.11>animistProphecy(tag=meme_Rapist) ->[itIsSaid]  그 강력한 파괴의 영혼은 우주의 파멸을 찾아다닐 것이다. 하지만 백만번을 강간한 강간범이 [relic0_name]의 힘을 사용하여 파괴자를 강간할 것이다.</Rapist.descriptionMaker.rules.rulesStrings.11>
 | 
			
		||||
  <Rapist.generalRules.rulesStrings.0>memeAdjective->강간하는</Rapist.generalRules.rulesStrings.0>
 | 
			
		||||
  <Rapist.generalRules.rulesStrings.1>memeAdjective->겁탈하는</Rapist.generalRules.rulesStrings.1>
 | 
			
		||||
  <Rapist.generalRules.rulesStrings.2>memeHyphenPrefix->강간범</Rapist.generalRules.rulesStrings.2>
 | 
			
		||||
  <Rapist.generalRules.rulesStrings.3>memeHyphenPrefix->치한</Rapist.generalRules.rulesStrings.3>
 | 
			
		||||
  <Rapist.generalRules.rulesStrings.4>memeHyphenPrefix->변태</Rapist.generalRules.rulesStrings.4>
 | 
			
		||||
  <Rapist.generalRules.rulesStrings.5>memeConcept->강간</Rapist.generalRules.rulesStrings.5>
 | 
			
		||||
  <Rapist.generalRules.rulesStrings.6>memeConcept->변태적인</Rapist.generalRules.rulesStrings.6>
 | 
			
		||||
  <Rapist.generalRules.rulesStrings.6>memeConcept->겁탈</Rapist.generalRules.rulesStrings.6>
 | 
			
		||||
  <Rapist.generalRules.rulesStrings.7>memeGod->슬라네쉬</Rapist.generalRules.rulesStrings.7>
 | 
			
		||||
  <Rapist.generalRules.rulesStrings.8>memeLeaderNoun->종마</Rapist.generalRules.rulesStrings.8>
 | 
			
		||||
  <Rapist.generalRules.rulesStrings.9>memeLeaderNoun->위대한 강간범</Rapist.generalRules.rulesStrings.9>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,9 @@
 | 
			
		|||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<LanguageData>
 | 
			
		||||
  <Gangbang.roles.0.label>개시자</Gangbang.roles.0.label>
 | 
			
		||||
  <Gangbang.roles.1.label>희생양</Gangbang.roles.1.label>
 | 
			
		||||
  <GangbangByAnimal.roles.0.label>개시자</GangbangByAnimal.roles.0.label>
 | 
			
		||||
  <GangbangByAnimal.roles.1.label>번식대상</GangbangByAnimal.roles.1.label>
 | 
			
		||||
  <GangbangByAnimal.roles.2.label>번식동물</GangbangByAnimal.roles.2.label>
 | 
			
		||||
 | 
			
		||||
</LanguageData>
 | 
			
		||||
| 
						 | 
				
			
			@ -1,9 +1,25 @@
 | 
			
		|||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<LanguageData>
 | 
			
		||||
  <Gangbang.description>의식의 품질에 따라, 참여자들은  {MINMOOD} ~ {MAXMOOD} 기분을 {MOODDAYS}일동안 얻게 됩니다.</Gangbang.description>
 | 
			
		||||
  <Gangbang.extraPredictedOutcomeDescriptions.0>만약 {0}이 훌륭히 진행된다면 참여자중 한명이 영감을 얻을 수 있습니다.</Gangbang.extraPredictedOutcomeDescriptions.0>
 | 
			
		||||
  <Gangbang.comps.2.label>제단에서 시작</Gangbang.comps.2.label>
 | 
			
		||||
  <Gangbang.comps.3.label>희생양 무너짐</Gangbang.comps.3.label>
 | 
			
		||||
  <Gangbang.comps.4.label>제단에서 시작</Gangbang.comps.4.label>
 | 
			
		||||
  <Gangbang.comps.5.label>제단에서 시작</Gangbang.comps.5.label>
 | 
			
		||||
  <Gangbang.comps.6.label>제단에서 시작</Gangbang.comps.6.label>
 | 
			
		||||
  <Gangbang.comps.4.label>희생양 극도로 무너짐</Gangbang.comps.4.label>
 | 
			
		||||
  <Gangbang.comps.5.label>희생양 완전히 무너짐</Gangbang.comps.5.label>
 | 
			
		||||
  <Gangbang.comps.6.label>만족한 참가자</Gangbang.comps.6.label>
 | 
			
		||||
  <Gangbang.outcomeChances.0.label>끔찍한</Gangbang.outcomeChances.0.label>
 | 
			
		||||
  <Gangbang.outcomeChances.1.label>지루한</Gangbang.outcomeChances.1.label>
 | 
			
		||||
  <Gangbang.outcomeChances.2.label>즐거운</Gangbang.outcomeChances.2.label>
 | 
			
		||||
  <Gangbang.outcomeChances.3.label>인상적인</Gangbang.outcomeChances.3.label>
 | 
			
		||||
  <BestialGangbang.description>의식의 품질에 따라, 참여자들은  {MINMOOD} ~ {MAXMOOD} 기분을 {MOODDAYS}일동안 얻게 됩니다.</BestialGangbang.description>
 | 
			
		||||
  <BestialGangbang.extraPredictedOutcomeDescriptions.0>만약 {0}이 훌륭히 진행된다면 참여자중 한명이 영감을 얻을 수 있습니다.</BestialGangbang.extraPredictedOutcomeDescriptions.0>
 | 
			
		||||
  <BestialGangbang.comps.2.label>제단에서 시작</BestialGangbang.comps.2.label>
 | 
			
		||||
  <BestialGangbang.comps.3.label>교배대상 무너짐</BestialGangbang.comps.3.label>
 | 
			
		||||
  <BestialGangbang.comps.4.label>교배대상 극도로 무너짐</BestialGangbang.comps.4.label>
 | 
			
		||||
  <BestialGangbang.comps.5.label>교배대상 완전히 무너짐</BestialGangbang.comps.5.label>
 | 
			
		||||
  <BestialGangbang.outcomeChances.0.label>끔찍한</BestialGangbang.outcomeChances.0.label>
 | 
			
		||||
  <BestialGangbang.outcomeChances.1.label>지루한</BestialGangbang.outcomeChances.1.label>
 | 
			
		||||
  <BestialGangbang.outcomeChances.2.label>즐거운</BestialGangbang.outcomeChances.2.label>
 | 
			
		||||
  <BestialGangbang.outcomeChances.3.label>인상적인</BestialGangbang.outcomeChances.3.label>
 | 
			
		||||
  
 | 
			
		||||
</LanguageData>
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,8 @@
 | 
			
		|||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<LanguageData>
 | 
			
		||||
  <Gangbang.shortDescOverride>윤간</Gangbang.shortDescOverride>
 | 
			
		||||
  <Gangbang.descOverride>의례적 윤간입니다. 지도자가 연설을 한 후, 희생양을 강간합니다. 지도자가 희생양을 강간하지 못하면 취소됩니다.</Gangbang.descOverride>
 | 
			
		||||
  <GangbangByAnimal.shortDescOverride>동물에 의한 윤간</GangbangByAnimal.shortDescOverride>
 | 
			
		||||
  <GangbangByAnimal.descOverride>동물들을 이용한 의례적 윤간입니다. 지도자가 연설을 마치면, 동물들이 교배대상을 윤간합니다.</GangbangByAnimal.descOverride>
 | 
			
		||||
 | 
			
		||||
</LanguageData>
 | 
			
		||||
| 
						 | 
				
			
			@ -1,11 +1,16 @@
 | 
			
		|||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<LanguageData>
 | 
			
		||||
  <Mod_Title>RJW Sexperience</Mod_Title>
 | 
			
		||||
  <RS_Mod_Title>RJW Sexperience</RS_Mod_Title>
 | 
			
		||||
 | 
			
		||||
  <LustStatFactor>음란함: x{0}%</LustStatFactor>
 | 
			
		||||
  <SlaveStatFactor>노예: x{0}%</SlaveStatFactor>
 | 
			
		||||
  <SlaveStatFactorDefault>노예가 아님: x100%</SlaveStatFactorDefault>
 | 
			
		||||
  <MemeStatFactor>문화 요소: x{0}%</MemeStatFactor>
 | 
			
		||||
  <RSVictimCondition>노예, 죄수, 순종적인 성별만 가능합니다.</RSVictimCondition>
 | 
			
		||||
  <RSBreederCondition>부적절한 동물: 번식할수 없거나 규율에의해 금지된 동물입니다.</RSBreederCondition>
 | 
			
		||||
  <RSNotHuman>사람이 아님</RSNotHuman>
 | 
			
		||||
  <RSNotAnimal>동물이 아님</RSNotAnimal>
 | 
			
		||||
  <RSShouldCanFuck>성관계가 가능해야 합니다.</RSShouldCanFuck>
 | 
			
		||||
 | 
			
		||||
  <RSOption_1_Label>기록 생성기 활성화</RSOption_1_Label>
 | 
			
		||||
  <RSOption_1_Desc>폰의 섹스기록을 무작위로 생성합니다.</RSOption_1_Desc>
 | 
			
		||||
| 
						 | 
				
			
			@ -21,12 +26,6 @@
 | 
			
		|||
  <RSOption_6_Desc>평균 섹스 횟수를 설정합니다.</RSOption_6_Desc>
 | 
			
		||||
  <RSOption_7_Label>노예 강간 경험 활성화</RSOption_7_Label>
 | 
			
		||||
  <RSOption_7_Desc>활성화할 경우 노예는 강간당한 경험을 가집니다.</RSOption_7_Desc>
 | 
			
		||||
  <RSOption_8_Label></RSOption_8_Label>
 | 
			
		||||
  <RSOption_8_Desc> </RSOption_8_Desc>
 | 
			
		||||
  <RSOption_9_Label></RSOption_9_Label>
 | 
			
		||||
  <RSOption_9_Desc> </RSOption_9_Desc>
 | 
			
		||||
  <RSOption_10_Label></RSOption_10_Label>
 | 
			
		||||
  <RSOption_10_Desc> </RSOption_10_Desc>
 | 
			
		||||
  <RSOption_11_Label></RSOption_11_Label>
 | 
			
		||||
  <RSOption_11_Desc> </RSOption_11_Desc>
 | 
			
		||||
  <RSOption_8_Label>음란함 한계</RSOption_8_Label>
 | 
			
		||||
  <RSOption_8_Desc>음란함의 한계치를 설정합니다.
음란함의 절대값이 이 값에 가까워지거나 클수록, 음란함이 적게 변합니다.</RSOption_8_Desc>
 | 
			
		||||
</LanguageData>
 | 
			
		||||
							
								
								
									
										68
									
								
								Patches/RJW_ThoughtDefsDeath.xml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										68
									
								
								Patches/RJW_ThoughtDefsDeath.xml
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,68 @@
 | 
			
		|||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
 | 
			
		||||
<Patch>
 | 
			
		||||
	<Operation Class="PatchOperationConditional">
 | 
			
		||||
		<xpath>Defs/ThoughtDef[defName="MyKinDied" or defName="MyCousinDied" or defName="MyGrandparentDied" or defName="MyUncleDied" or defName="MyAuntDied" or defName="MyHalfSiblingDied" or defName="MyNephewDied" or defName="MyNieceDied" or defName="MyHalfSiblingDied" or defName="MyHalfSiblingDied" or defName="MyHalfSiblingDied"]/nullifyingPrecepts</xpath>
 | 
			
		||||
		<nomatch Class="PatchOperationAdd">
 | 
			
		||||
			<xpath>Defs/ThoughtDef[defName="MyKinDied" or defName="MyCousinDied" or defName="MyGrandparentDied" or defName="MyUncleDied" or defName="MyAuntDied" or defName="MyHalfSiblingDied" or defName="MyNephewDied" or defName="MyNieceDied" or defName="MyHalfSiblingDied" or defName="MyHalfSiblingDied" or defName="MyHalfSiblingDied"]</xpath>
 | 
			
		||||
			<value>
 | 
			
		||||
				<nullifyingPrecepts>
 | 
			
		||||
					<li>SocialAffection_Psychopath</li>
 | 
			
		||||
					<li>SocialAffection_Dry</li>
 | 
			
		||||
					<li>SocialAffection_Small</li>
 | 
			
		||||
				</nullifyingPrecepts>
 | 
			
		||||
			</value>
 | 
			
		||||
		</nomatch>
 | 
			
		||||
		<match Class="PatchOperationAdd">
 | 
			
		||||
			<xpath>Defs/ThoughtDef[defName="MyKinDied" or defName="MyCousinDied" or defName="MyGrandparentDied" or defName="MyUncleDied" or defName="MyAuntDied" or defName="MyHalfSiblingDied" or defName="MyNephewDied" or defName="MyNieceDied" or defName="MyHalfSiblingDied" or defName="MyHalfSiblingDied" or defName="MyHalfSiblingDied"]/nullifyingPrecepts</xpath>
 | 
			
		||||
			<value>
 | 
			
		||||
				<li>SocialAffection_Psychopath</li>
 | 
			
		||||
				<li>SocialAffection_Dry</li>
 | 
			
		||||
				<li>SocialAffection_Small</li>
 | 
			
		||||
			</value>
 | 
			
		||||
		</match>
 | 
			
		||||
	</Operation>
 | 
			
		||||
 | 
			
		||||
	<Operation Class="PatchOperationConditional">
 | 
			
		||||
		<xpath>Defs/ThoughtDef[defName="MyMotherDied" or defName="MyFatherDied" or defName="MyGrandchildDied" or defName="MySisterDied" or defName="MyBrotherDied" or defName="MyDaughterDied" or defName="MySonDied" or defName="WitnessedDeathFamily" ]/nullifyingPrecepts</xpath>
 | 
			
		||||
		<nomatch Class="PatchOperationAdd">
 | 
			
		||||
			<xpath>Defs/ThoughtDef[defName="MyMotherDied" or defName="MyFatherDied" or defName="MyGrandchildDied" or defName="MySisterDied" or defName="MyBrotherDied" or defName="MyDaughterDied" or defName="MySonDied" or defName="WitnessedDeathFamily" ]</xpath>
 | 
			
		||||
			<value>
 | 
			
		||||
				<nullifyingPrecepts>
 | 
			
		||||
					<li>SocialAffection_Psychopath</li>
 | 
			
		||||
					<li>SocialAffection_Dry</li>
 | 
			
		||||
				</nullifyingPrecepts>
 | 
			
		||||
			</value>
 | 
			
		||||
		</nomatch>
 | 
			
		||||
		<match Class="PatchOperationAdd">
 | 
			
		||||
			<xpath>Defs/ThoughtDef[defName="MyMotherDied" or defName="MyFatherDied" or defName="MyGrandchildDied" or defName="MySisterDied" or defName="MyBrotherDied" or defName="MyDaughterDied" or defName="MySonDied" or defName="WitnessedDeathFamily" ]/nullifyingPrecepts</xpath>
 | 
			
		||||
			<value>
 | 
			
		||||
				<li>SocialAffection_Psychopath</li>
 | 
			
		||||
				<li>SocialAffection_Dry</li>
 | 
			
		||||
			</value>
 | 
			
		||||
		</match>
 | 
			
		||||
	</Operation>
 | 
			
		||||
 | 
			
		||||
	<Operation Class="PatchOperationConditional">
 | 
			
		||||
		<xpath>Defs/ThoughtDef[defName="KnowGuestExecuted" or defName="KnowColonistExecuted" or defName="KnowPrisonerDiedInnocent" or defName="KnowColonistDied" or defName="PawnWithGoodOpinionDied" or defName="PawnWithBadOpinionDied" or defName="WitnessedDeathAlly" or defName="WitnessedDeathNonAlly" or defName="ColonistBanishedToDie" or defName="PrisonerBanishedToDie" or defName="ColonistBanishedToDie" or defName="ColonistLeftUnburied"]/nullifyingPrecepts</xpath>
 | 
			
		||||
		<nomatch Class="PatchOperationAdd">
 | 
			
		||||
			<xpath>Defs/ThoughtDef[defName="KnowGuestExecuted" or defName="KnowColonistExecuted" or defName="KnowPrisonerDiedInnocent" or defName="KnowColonistDied" or defName="PawnWithGoodOpinionDied" or defName="PawnWithBadOpinionDied" or defName="WitnessedDeathAlly" or defName="WitnessedDeathNonAlly" or defName="ColonistBanishedToDie" or defName="PrisonerBanishedToDie" or defName="ColonistBanishedToDie" or defName="ColonistLeftUnburied"]</xpath>
 | 
			
		||||
			<value>
 | 
			
		||||
				<nullifyingPrecepts>
 | 
			
		||||
					<li>SocialAffection_Psychopath</li>
 | 
			
		||||
					<li>SocialAffection_OnlyFamily</li>
 | 
			
		||||
				</nullifyingPrecepts>
 | 
			
		||||
			</value>
 | 
			
		||||
		</nomatch>
 | 
			
		||||
		<match Class="PatchOperationAdd">
 | 
			
		||||
			<xpath>Defs/ThoughtDef[defName="KnowGuestExecuted" or defName="KnowColonistExecuted" or defName="KnowPrisonerDiedInnocent" or defName="KnowColonistDied" or defName="PawnWithGoodOpinionDied" or defName="PawnWithBadOpinionDied" or defName="WitnessedDeathAlly" or defName="WitnessedDeathNonAlly" or defName="ColonistBanishedToDie" or defName="PrisonerBanishedToDie" or defName="ColonistBanishedToDie" or defName="ColonistLeftUnburied"]/nullifyingPrecepts</xpath>
 | 
			
		||||
			<value>
 | 
			
		||||
				<li>SocialAffection_Psychopath</li>
 | 
			
		||||
				<li>SocialAffection_OnlyFamily</li>
 | 
			
		||||
			</value>
 | 
			
		||||
		</match>
 | 
			
		||||
	</Operation>
 | 
			
		||||
	
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
</Patch>
 | 
			
		||||
							
								
								
									
										68
									
								
								Patches/RJW_ThoughtDefsLost.xml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										68
									
								
								Patches/RJW_ThoughtDefsLost.xml
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,68 @@
 | 
			
		|||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
 | 
			
		||||
<Patch>
 | 
			
		||||
	<Operation Class="PatchOperationConditional">
 | 
			
		||||
		<xpath>Defs/ThoughtDef[defName="MyKinLost" or defName="MyCousinLost" or defName="MyGrandparentLost" or defName="MyUncleLost" or defName="MyAuntLost" or defName="MyHalfSiblingLost" or defName="MyNephewLost" or defName="MyNieceLost" or defName="MyHalfSiblingLost" or defName="MyHalfSiblingLost" or defName="MyHalfSiblingLost"]/nullifyingPrecepts</xpath>
 | 
			
		||||
		<nomatch Class="PatchOperationAdd">
 | 
			
		||||
			<xpath>Defs/ThoughtDef[defName="MyKinLost" or defName="MyCousinLost" or defName="MyGrandparentLost" or defName="MyUncleLost" or defName="MyAuntLost" or defName="MyHalfSiblingLost" or defName="MyNephewLost" or defName="MyNieceLost" or defName="MyHalfSiblingLost" or defName="MyHalfSiblingLost" or defName="MyHalfSiblingLost"]</xpath>
 | 
			
		||||
			<value>
 | 
			
		||||
				<nullifyingPrecepts>
 | 
			
		||||
					<li>SocialAffection_Psychopath</li>
 | 
			
		||||
					<li>SocialAffection_Dry</li>
 | 
			
		||||
					<li>SocialAffection_Small</li>
 | 
			
		||||
				</nullifyingPrecepts>
 | 
			
		||||
			</value>
 | 
			
		||||
		</nomatch>
 | 
			
		||||
		<match Class="PatchOperationAdd">
 | 
			
		||||
			<xpath>Defs/ThoughtDef[defName="MyKinLost" or defName="MyCousinLost" or defName="MyGrandparentLost" or defName="MyUncleLost" or defName="MyAuntLost" or defName="MyHalfSiblingLost" or defName="MyNephewLost" or defName="MyNieceLost" or defName="MyHalfSiblingLost" or defName="MyHalfSiblingLost" or defName="MyHalfSiblingLost"]/nullifyingPrecepts</xpath>
 | 
			
		||||
			<value>
 | 
			
		||||
				<li>SocialAffection_Psychopath</li>
 | 
			
		||||
				<li>SocialAffection_Dry</li>
 | 
			
		||||
				<li>SocialAffection_Small</li>
 | 
			
		||||
			</value>
 | 
			
		||||
		</match>
 | 
			
		||||
	</Operation>
 | 
			
		||||
 | 
			
		||||
	<Operation Class="PatchOperationConditional">
 | 
			
		||||
		<xpath>Defs/ThoughtDef[defName="MyMotherLost" or defName="MyFatherLost" or defName="MyGrandchildLost" or defName="MySisterLost" or defName="MyBrotherLost" or defName="MyDaughterLost" or defName="MySonLost"]/nullifyingPrecepts</xpath>
 | 
			
		||||
		<nomatch Class="PatchOperationAdd">
 | 
			
		||||
			<xpath>Defs/ThoughtDef[defName="MyMotherLost" or defName="MyFatherLost" or defName="MyGrandchildLost" or defName="MySisterLost" or defName="MyBrotherLost" or defName="MyDaughterLost" or defName="MySonLost"]</xpath>
 | 
			
		||||
			<value>
 | 
			
		||||
				<nullifyingPrecepts>
 | 
			
		||||
					<li>SocialAffection_Psychopath</li>
 | 
			
		||||
					<li>SocialAffection_Dry</li>
 | 
			
		||||
				</nullifyingPrecepts>
 | 
			
		||||
			</value>
 | 
			
		||||
		</nomatch>
 | 
			
		||||
		<match Class="PatchOperationAdd">
 | 
			
		||||
			<xpath>Defs/ThoughtDef[defName="MyMotherLost" or defName="MyFatherLost" or defName="MyGrandchildLost" or defName="MySisterLost" or defName="MyBrotherLost" or defName="MyDaughterLost" or defName="MySonLost"]/nullifyingPrecepts</xpath>
 | 
			
		||||
			<value>
 | 
			
		||||
				<li>SocialAffection_Psychopath</li>
 | 
			
		||||
				<li>SocialAffection_Dry</li>
 | 
			
		||||
			</value>
 | 
			
		||||
		</match>
 | 
			
		||||
	</Operation>
 | 
			
		||||
 | 
			
		||||
	<Operation Class="PatchOperationConditional">
 | 
			
		||||
		<xpath>Defs/ThoughtDef[defName="ColonistLost" or defName="PawnWithGoodOpinionLost" or defName="PawnWithBadOpinionLost"]/nullifyingPrecepts</xpath>
 | 
			
		||||
		<nomatch Class="PatchOperationAdd">
 | 
			
		||||
			<xpath>Defs/ThoughtDef[defName="ColonistLost" or defName="PawnWithGoodOpinionLost" or defName="PawnWithBadOpinionLost"]</xpath>
 | 
			
		||||
			<value>
 | 
			
		||||
				<nullifyingPrecepts>
 | 
			
		||||
					<li>SocialAffection_Psychopath</li>
 | 
			
		||||
					<li>SocialAffection_OnlyFamily</li>
 | 
			
		||||
				</nullifyingPrecepts>
 | 
			
		||||
			</value>
 | 
			
		||||
		</nomatch>
 | 
			
		||||
		<match Class="PatchOperationAdd">
 | 
			
		||||
			<xpath>Defs/ThoughtDef[defName="ColonistLost" or defName="PawnWithGoodOpinionLost" or defName="PawnWithBadOpinionLost"]/nullifyingPrecepts</xpath>
 | 
			
		||||
			<value>
 | 
			
		||||
				<li>SocialAffection_Psychopath</li>
 | 
			
		||||
				<li>SocialAffection_OnlyFamily</li>
 | 
			
		||||
			</value>
 | 
			
		||||
		</match>
 | 
			
		||||
	</Operation>
 | 
			
		||||
	
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
</Patch>
 | 
			
		||||
| 
						 | 
				
			
			@ -21,6 +21,7 @@ namespace RJWSexperience
 | 
			
		|||
        public const float SexPerYearDefault = 30;
 | 
			
		||||
        public const bool SlavesBeenRapedExpDefault = true;
 | 
			
		||||
        public const bool EnableStatRandomizerDefault = true;
 | 
			
		||||
        public const float LustLimitDefault = 500f/3f;
 | 
			
		||||
 | 
			
		||||
        public static float MaxLustDeviation = MaxInitialLustDefault;
 | 
			
		||||
        public static float AvgLust = AvgLustDefault;
 | 
			
		||||
| 
						 | 
				
			
			@ -29,6 +30,7 @@ namespace RJWSexperience
 | 
			
		|||
        public static float SexPerYear = SexPerYearDefault;
 | 
			
		||||
        public static bool SlavesBeenRapedExp = SlavesBeenRapedExpDefault;
 | 
			
		||||
        public static bool EnableRecordRandomizer = EnableStatRandomizerDefault;
 | 
			
		||||
        public static float LustLimit = LustLimitDefault;
 | 
			
		||||
 | 
			
		||||
        public static void ResettoDefault()
 | 
			
		||||
        {
 | 
			
		||||
| 
						 | 
				
			
			@ -39,19 +41,19 @@ namespace RJWSexperience
 | 
			
		|||
            SexPerYear = SexPerYearDefault;
 | 
			
		||||
            SlavesBeenRapedExp = SlavesBeenRapedExpDefault;
 | 
			
		||||
            EnableRecordRandomizer = EnableStatRandomizerDefault;
 | 
			
		||||
            LustLimit = LustLimitDefault;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public override void ExposeData()
 | 
			
		||||
        {
 | 
			
		||||
            Scribe_Values.Look(ref MaxLustDeviation, "MaxLustDeviation", MaxLustDeviation);
 | 
			
		||||
            Scribe_Values.Look(ref AvgLust, "AvgLust", AvgLust);
 | 
			
		||||
            Scribe_Values.Look(ref MaxSexCountDeviation, "MaxSexCountDeviation", MaxSexCountDeviation);
 | 
			
		||||
            Scribe_Values.Look(ref LustEffectPower, "LustEffectPower", LustEffectPower);
 | 
			
		||||
            Scribe_Values.Look(ref SexPerYear, "SexPerYear", SexPerYear);
 | 
			
		||||
            Scribe_Values.Look(ref SlavesBeenRapedExp, "SlavesBeenRapedExp", SlavesBeenRapedExp);
 | 
			
		||||
            Scribe_Values.Look(ref EnableRecordRandomizer, "EnableRecordRandomizer", EnableRecordRandomizer);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            Scribe_Values.Look(ref MaxLustDeviation, "MaxLustDeviation", MaxLustDeviation, true);
 | 
			
		||||
            Scribe_Values.Look(ref AvgLust, "AvgLust", AvgLust, true);
 | 
			
		||||
            Scribe_Values.Look(ref MaxSexCountDeviation, "MaxSexCountDeviation", MaxSexCountDeviation, true);
 | 
			
		||||
            Scribe_Values.Look(ref LustEffectPower, "LustEffectPower", LustEffectPower, true);
 | 
			
		||||
            Scribe_Values.Look(ref SexPerYear, "SexPerYear", SexPerYear, true);
 | 
			
		||||
            Scribe_Values.Look(ref SlavesBeenRapedExp, "SlavesBeenRapedExp", SlavesBeenRapedExp, true);
 | 
			
		||||
            Scribe_Values.Look(ref EnableRecordRandomizer, "EnableRecordRandomizer", EnableRecordRandomizer, true);
 | 
			
		||||
            Scribe_Values.Look(ref LustLimit, "LustLimit", LustLimit, true);
 | 
			
		||||
            base.ExposeData();
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			@ -74,6 +76,7 @@ namespace RJWSexperience
 | 
			
		|||
        public override void DoSettingsWindowContents(Rect inRect)
 | 
			
		||||
        {
 | 
			
		||||
            int Adjuster;
 | 
			
		||||
            float fAdjuster;
 | 
			
		||||
            Rect outRect = new Rect(0f, 30f, inRect.width, inRect.height - 30f);
 | 
			
		||||
            Rect mainRect = new Rect(0f, 0f, inRect.width - 30f, inRect.height + 480f);
 | 
			
		||||
            Listing_Standard listmain = new Listing_Standard();
 | 
			
		||||
| 
						 | 
				
			
			@ -82,16 +85,23 @@ namespace RJWSexperience
 | 
			
		|||
            listmain.Begin(mainRect);
 | 
			
		||||
            listmain.Gap(20f);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            LabelwithTextfield(listmain.GetRect(24f), Keyed.Option_2_Label + " x" + Configurations.LustEffectPower, Keyed.Option_2_Desc, ref Configurations.LustEffectPower, 0f, 100f);
 | 
			
		||||
            Adjuster = (int)(Configurations.LustEffectPower * 1000);
 | 
			
		||||
            //listmain.Label(Keyed.Option_2_Label + " x" + Configurations.LustEffectPower , -1, Keyed.Option_2_Desc);
 | 
			
		||||
            Adjuster = (int)listmain.Slider(Adjuster, 0, 2000);
 | 
			
		||||
            Configurations.LustEffectPower = (float)Adjuster / 1000;
 | 
			
		||||
 | 
			
		||||
            fAdjuster = Configurations.LustLimit * 3;
 | 
			
		||||
            LabelwithTextfield(listmain.GetRect(24f), Keyed.Option_8_Label + " " + fAdjuster, Keyed.Option_8_Desc, ref fAdjuster, 0, 10000f);
 | 
			
		||||
            fAdjuster = (int)listmain.Slider(fAdjuster, 0, 1000);
 | 
			
		||||
            Configurations.LustLimit = fAdjuster / 3;
 | 
			
		||||
 | 
			
		||||
            listmain.CheckboxLabeled(Keyed.Option_1_Label, ref Configurations.EnableRecordRandomizer, Keyed.Option_1_Desc);
 | 
			
		||||
            if (Configurations.EnableRecordRandomizer)
 | 
			
		||||
            {
 | 
			
		||||
                Listing_Standard section = listmain.BeginSection(24f*11f);
 | 
			
		||||
                Listing_Standard section = listmain.BeginSection(24f*9f);
 | 
			
		||||
 | 
			
		||||
                LabelwithTextfield(section.GetRect(24f), Keyed.Option_2_Label + " x" + Configurations.LustEffectPower, Keyed.Option_2_Desc, ref Configurations.LustEffectPower, 0f, 100f);
 | 
			
		||||
                Adjuster = (int)(Configurations.LustEffectPower * 1000);
 | 
			
		||||
                //listmain.Label(Keyed.Option_2_Label + " x" + Configurations.LustEffectPower , -1, Keyed.Option_2_Desc);
 | 
			
		||||
                Adjuster = (int)section.Slider(Adjuster, 0, 2000);
 | 
			
		||||
                Configurations.LustEffectPower = (float)Adjuster / 1000;
 | 
			
		||||
 | 
			
		||||
                LabelwithTextfield(section.GetRect(24f), Keyed.Option_3_Label + " " + Configurations.MaxLustDeviation, Keyed.Option_3_Label, ref Configurations.MaxLustDeviation, 0f, 2000f);
 | 
			
		||||
                Adjuster = (int)Configurations.MaxLustDeviation;
 | 
			
		||||
| 
						 | 
				
			
			@ -105,6 +115,7 @@ namespace RJWSexperience
 | 
			
		|||
                Adjuster = (int)section.Slider(Adjuster, -1000, 1000);
 | 
			
		||||
                Configurations.AvgLust = Adjuster;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
                LabelwithTextfield(section.GetRect(24f), Keyed.Option_5_Label + " " + Configurations.MaxSexCountDeviation, Keyed.Option_5_Desc, ref Configurations.MaxSexCountDeviation, 0f, 2000f);
 | 
			
		||||
                Adjuster = (int)Configurations.MaxSexCountDeviation;
 | 
			
		||||
                //listmain.Label(Keyed.Option_5_Label + " " + Configurations.MaxSexCountDeviation, -1, Keyed.Option_5_Desc);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										46
									
								
								RJWSexperience/RJWSexperience/DebugAction.cs
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								RJWSexperience/RJWSexperience/DebugAction.cs
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,46 @@
 | 
			
		|||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using System.Text;
 | 
			
		||||
using System.Threading.Tasks;
 | 
			
		||||
using Verse;
 | 
			
		||||
using RimWorld;
 | 
			
		||||
using rjw;
 | 
			
		||||
 | 
			
		||||
namespace RJWSexperience
 | 
			
		||||
{
 | 
			
		||||
    public static class DebugToolsSexperience
 | 
			
		||||
    {
 | 
			
		||||
        [DebugAction("RJW Sexperience", "Reset lust", false, false, actionType = DebugActionType.ToolMapForPawns, allowedGameStates = AllowedGameStates.PlayingOnMap)]
 | 
			
		||||
        private static void ResetLust(Pawn p)
 | 
			
		||||
        {
 | 
			
		||||
            float lust;
 | 
			
		||||
            if (xxx.is_nympho(p)) lust = p.RecordRandomizer(VariousDefOf.Lust, Configurations.AvgLust, Configurations.MaxLustDeviation, 0);
 | 
			
		||||
            else lust = p.RecordRandomizer(VariousDefOf.Lust, Configurations.AvgLust, Configurations.MaxLustDeviation, float.MinValue);
 | 
			
		||||
            MoteMaker.ThrowText(p.TrueCenter(), p.Map, "Lust: " + lust);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        [DebugAction("RJW Sexperience", "Set lust to 0", false, false, actionType = DebugActionType.ToolMapForPawns, allowedGameStates = AllowedGameStates.PlayingOnMap)]
 | 
			
		||||
        private static void SetLust(Pawn p)
 | 
			
		||||
        {
 | 
			
		||||
            p.records.SetTo(VariousDefOf.Lust, 0);
 | 
			
		||||
            MoteMaker.ThrowText(p.TrueCenter(), p.Map, "Lust: 0");
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        [DebugAction("RJW Sexperience", "Add 10 to lust", false, false, actionType = DebugActionType.ToolMapForPawns, allowedGameStates = AllowedGameStates.PlayingOnMap)]
 | 
			
		||||
        private static void AddLust(Pawn p)
 | 
			
		||||
        {
 | 
			
		||||
            p.records.AddTo(VariousDefOf.Lust, 10);
 | 
			
		||||
            MoteMaker.ThrowText(p.TrueCenter(), p.Map, "Lust: " + p.records.GetValue(VariousDefOf.Lust));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        [DebugAction("RJW Sexperience", "Subtract 10 to lust", false, false, actionType = DebugActionType.ToolMapForPawns, allowedGameStates = AllowedGameStates.PlayingOnMap)]
 | 
			
		||||
        private static void SubtractLust(Pawn p)
 | 
			
		||||
        {
 | 
			
		||||
            p.records.AddTo(VariousDefOf.Lust, -10);
 | 
			
		||||
            MoteMaker.ThrowText(p.TrueCenter(), p.Map, "Lust: " + p.records.GetValue(VariousDefOf.Lust));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -17,6 +17,12 @@ namespace RJWSexperience
 | 
			
		|||
 | 
			
		||||
        public static readonly string Mod_Title = "RS_Mod_Title".Translate();
 | 
			
		||||
        public static readonly string SlaveStatFactorDefault = "SlaveStatFactorDefault".Translate();
 | 
			
		||||
        public static readonly string RSVictimCondition = "RSVictimCondition".Translate();
 | 
			
		||||
        public static readonly string RSBreederCondition = "RSBreederCondition".Translate();
 | 
			
		||||
        public static readonly string RSNotHuman = "RSNotHuman".Translate();
 | 
			
		||||
        public static readonly string RSNotAnimal = "RSNotAnimal".Translate();
 | 
			
		||||
        public static readonly string RSShouldCanFuck = "RSShouldCanFuck".Translate();
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        public static readonly string Option_1_Label = "RSOption_1_Label".Translate();
 | 
			
		||||
        public static readonly string Option_1_Desc  = "RSOption_1_Desc".Translate();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										32
									
								
								RJWSexperience/RJWSexperience/PawnRelationWorkers.cs
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								RJWSexperience/RJWSexperience/PawnRelationWorkers.cs
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,32 @@
 | 
			
		|||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using System.Text;
 | 
			
		||||
using System.Threading.Tasks;
 | 
			
		||||
using Verse;
 | 
			
		||||
using RimWorld;
 | 
			
		||||
using rjw;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
namespace RJWSexperience
 | 
			
		||||
{
 | 
			
		||||
    public class PawnRelationWorker_Bastard : PawnRelationWorker_Child
 | 
			
		||||
    {
 | 
			
		||||
        public override bool InRelation(Pawn me, Pawn other)
 | 
			
		||||
        {
 | 
			
		||||
            Pawn mother = other.GetMother();
 | 
			
		||||
            Pawn father = other.GetFather();
 | 
			
		||||
 | 
			
		||||
            if (me != other && (mother == me || father == me))
 | 
			
		||||
            {
 | 
			
		||||
                //if (!mother?.relations?.DirectRelationExists(PawnRelationDefOf.Spouse, father) ?? true) return true;
 | 
			
		||||
                //if (!mother?.relations?.DirectRelationExists(PawnRelationDefOf.ExSpouse, father) ?? true) return true;
 | 
			
		||||
                return (!mother?.relations?.DirectRelationExists(PawnRelationDefOf.Spouse, father) ?? true) || (!mother?.relations?.DirectRelationExists(PawnRelationDefOf.ExSpouse, father) ?? true);
 | 
			
		||||
            }
 | 
			
		||||
            
 | 
			
		||||
            return false;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -78,8 +78,10 @@
 | 
			
		|||
  </ItemGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <Compile Include="Configurations.cs" />
 | 
			
		||||
    <Compile Include="DebugAction.cs" />
 | 
			
		||||
    <Compile Include="GoodwillSituationWorker_MemeCompatibility.cs" />
 | 
			
		||||
    <Compile Include="Harmony.cs" />
 | 
			
		||||
    <Compile Include="PawnRelationWorkers.cs" />
 | 
			
		||||
    <Compile Include="Rituals\JobGiver_GangbangVictim.cs" />
 | 
			
		||||
    <Compile Include="Keyed.cs" />
 | 
			
		||||
    <Compile Include="PreceptComp_SelftTookThoughtExtended.cs" />
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -7,6 +7,7 @@ using HarmonyLib;
 | 
			
		|||
using rjw;
 | 
			
		||||
using RimWorld;
 | 
			
		||||
using Verse;
 | 
			
		||||
using UnityEngine;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
namespace RJWSexperience
 | 
			
		||||
| 
						 | 
				
			
			@ -15,7 +16,7 @@ namespace RJWSexperience
 | 
			
		|||
    {
 | 
			
		||||
        public static float GetSexStat(this Pawn pawn)
 | 
			
		||||
        {
 | 
			
		||||
            if (xxx.is_human(pawn))
 | 
			
		||||
            if (xxx.is_human(pawn) && !pawn.Dead)
 | 
			
		||||
            {
 | 
			
		||||
                return pawn.GetStatValue(xxx.sex_stat);
 | 
			
		||||
            }
 | 
			
		||||
| 
						 | 
				
			
			@ -27,6 +28,32 @@ namespace RJWSexperience
 | 
			
		|||
            return new HistoryEvent(def, pawn.Named(HistoryEventArgsNames.Doer), tag.Named(HistoryEventArgsNamesCustom.Tag), partner.Named(HistoryEventArgsNamesCustom.Partner));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public static Faction GetFactionUsingPrecept(this Pawn baby, out Ideo ideo)
 | 
			
		||||
        {
 | 
			
		||||
            Faction playerfaction = Find.FactionManager.OfPlayer;
 | 
			
		||||
            Ideo mainideo = playerfaction.ideos.PrimaryIdeo;
 | 
			
		||||
            if (mainideo != null)
 | 
			
		||||
            {
 | 
			
		||||
                if (mainideo.HasPrecept(VariousDefOf.BabyFaction_AlwaysFather))
 | 
			
		||||
                {
 | 
			
		||||
                    Pawn parent = baby.GetFather();
 | 
			
		||||
                    if (parent == null) baby.GetMother();
 | 
			
		||||
 | 
			
		||||
                    ideo = parent.Ideo;
 | 
			
		||||
                    return parent.Faction;
 | 
			
		||||
                }
 | 
			
		||||
                else if (mainideo.HasPrecept(VariousDefOf.BabyFaction_AlwaysColony))
 | 
			
		||||
                {
 | 
			
		||||
                    ideo = mainideo;
 | 
			
		||||
                    return playerfaction;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            Pawn mother = baby.GetMother();
 | 
			
		||||
            ideo = mother.Ideo;
 | 
			
		||||
            return mother.Faction;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -81,17 +108,23 @@ namespace RJWSexperience
 | 
			
		|||
    [HarmonyPatch(typeof(SexUtility), "SatisfyPersonal")]
 | 
			
		||||
    public static class RJW_Patch_SatisfyPersonal_Post
 | 
			
		||||
    {
 | 
			
		||||
        private const float base_sat_per_fuck = 0.3f;
 | 
			
		||||
        private const float base_sat_per_fuck = 0.4f;
 | 
			
		||||
        public static void Postfix(Pawn pawn, Pawn partner, xxx.rjwSextype sextype, bool violent, bool pawn_is_raping, float satisfaction)
 | 
			
		||||
        {
 | 
			
		||||
            float? lust = pawn.records?.GetValue(VariousDefOf.Lust);
 | 
			
		||||
            if (lust != null)
 | 
			
		||||
            {
 | 
			
		||||
                if (sextype != xxx.rjwSextype.Masturbation) pawn.records.AddTo(VariousDefOf.Lust, satisfaction - base_sat_per_fuck); // If the sex is satisfactory, lust grows up. Declines at the opposite.
 | 
			
		||||
                else pawn.records.AddTo(VariousDefOf.Lust, satisfaction * satisfaction);                                             // Masturbation always increases lust.
 | 
			
		||||
                if (sextype != xxx.rjwSextype.Masturbation) pawn.records.AddTo(VariousDefOf.Lust, Mathf.Clamp((satisfaction - base_sat_per_fuck) * LustIncrementFactor(lust ?? 0),-0.5f,0.5f)); // If the sex is satisfactory, lust grows up. Declines at the opposite.
 | 
			
		||||
                else pawn.records.AddTo(VariousDefOf.Lust, Mathf.Clamp(satisfaction * satisfaction * LustIncrementFactor(lust ?? 0), 0,0.5f));                                             // Masturbation always increases lust.
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public static float LustIncrementFactor(float lust)
 | 
			
		||||
        {
 | 
			
		||||
            return Mathf.Exp(-Mathf.Pow(lust / Configurations.LustLimit, 2));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    [HarmonyPatch(typeof(ThinkNode_ChancePerHour_Bestiality), "MtbHours")]
 | 
			
		||||
| 
						 | 
				
			
			@ -100,7 +133,7 @@ namespace RJWSexperience
 | 
			
		|||
        public static void Postfix(Pawn pawn, ref float __result)
 | 
			
		||||
        {
 | 
			
		||||
            Ideo ideo = pawn.Ideo;
 | 
			
		||||
            if (ideo != null) __result = BestialityByPrecept(ideo); // ideo is null if don't have dlc
 | 
			
		||||
            if (ideo != null) __result *= BestialityByPrecept(ideo); // ideo is null if don't have dlc
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public static float BestialityByPrecept(Ideo ideo)
 | 
			
		||||
| 
						 | 
				
			
			@ -403,6 +436,7 @@ namespace RJWSexperience
 | 
			
		|||
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			@ -421,7 +455,20 @@ namespace RJWSexperience
 | 
			
		|||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    [HarmonyPatch(typeof(Hediff_BasePregnancy), "PostBirth")]
 | 
			
		||||
    public static class RJW_Patch_PostBirth
 | 
			
		||||
    {
 | 
			
		||||
        public static void Postfix(Pawn mother, Pawn father, Pawn baby)
 | 
			
		||||
        {
 | 
			
		||||
            if (!mother.IsAnimal())
 | 
			
		||||
            {
 | 
			
		||||
                //baby.SetFactionDirect(baby.GetFactionUsingPrecept());
 | 
			
		||||
                baby.SetFaction(baby.GetFactionUsingPrecept(out Ideo ideo));
 | 
			
		||||
                baby.ideo.SetIdeo(ideo);
 | 
			
		||||
                if (baby.Faction == Find.FactionManager.OfPlayer && !baby.IsSlave) baby.guest.SetGuestStatus(null, GuestStatus.Guest);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -23,14 +23,13 @@ namespace RJWSexperience
 | 
			
		|||
            if (CanBeVictim(p)) return true;
 | 
			
		||||
            if (!skipReason)
 | 
			
		||||
            {
 | 
			
		||||
                reason = "slave, prisoner, submissive gender only";
 | 
			
		||||
                reason = Keyed.RSVictimCondition;
 | 
			
		||||
            }
 | 
			
		||||
            return false;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public static bool CanBeVictim(Pawn pawn)
 | 
			
		||||
        {
 | 
			
		||||
            
 | 
			
		||||
            if (pawn.IsPrisonerOfColony || pawn.IsSlaveOfColony) return true;
 | 
			
		||||
            if (pawn.Ideo?.HasMeme(MemeDefOf.FemaleSupremacy) ?? false && pawn.gender != Gender.Female) return true;
 | 
			
		||||
            else if (pawn.Ideo?.HasMeme(MemeDefOf.MaleSupremacy) ?? false && pawn.gender != Gender.Male) return true;
 | 
			
		||||
| 
						 | 
				
			
			@ -52,13 +51,13 @@ namespace RJWSexperience
 | 
			
		|||
            reason = null;
 | 
			
		||||
            if (!xxx.is_human(p))
 | 
			
		||||
            {
 | 
			
		||||
                reason = "not human";
 | 
			
		||||
                reason = Keyed.RSNotHuman;
 | 
			
		||||
                return false;
 | 
			
		||||
            }
 | 
			
		||||
            if (CanBeBreedee(p)) return true;
 | 
			
		||||
            if (!skipReason)
 | 
			
		||||
            {
 | 
			
		||||
                reason = "capable of sex is required";
 | 
			
		||||
                reason = Keyed.RSShouldCanFuck;
 | 
			
		||||
            }
 | 
			
		||||
            return false;
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			@ -85,13 +84,13 @@ namespace RJWSexperience
 | 
			
		|||
            reason = null;
 | 
			
		||||
            if (!p.IsAnimal())
 | 
			
		||||
            {
 | 
			
		||||
                reason = "not animal";
 | 
			
		||||
                reason = Keyed.RSNotAnimal;
 | 
			
		||||
                return false;
 | 
			
		||||
            }
 | 
			
		||||
            if (CanBeBreeder(p, assignments?.Ritual)) return true;
 | 
			
		||||
            if (!skipReason)
 | 
			
		||||
            {
 | 
			
		||||
                reason = "improper animal: cannot breed or forbidden by precepts";
 | 
			
		||||
                reason = Keyed.RSBreederCondition;
 | 
			
		||||
            }
 | 
			
		||||
            return false;
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -74,11 +74,14 @@ namespace RJWSexperience
 | 
			
		|||
            float lust = pawn.records.GetValue(VariousDefOf.Lust) * Configurations.LustEffectPower;
 | 
			
		||||
            if (lust < 0)
 | 
			
		||||
            {
 | 
			
		||||
                lust = (float)Math.Exp((lust + 200 * Math.Log(10)) / 100) - 100f;
 | 
			
		||||
                lust = Mathf.Exp((lust + 200f * Mathf.Log(10f)) / 100f) - 100f;
 | 
			
		||||
            }
 | 
			
		||||
            else
 | 
			
		||||
            {
 | 
			
		||||
                lust = Mathf.Sqrt(100f*(lust + 25f)) - 50f;
 | 
			
		||||
            }
 | 
			
		||||
            
 | 
			
		||||
 | 
			
		||||
            return 1 + lust / 100;
 | 
			
		||||
            return 1 + lust / 100f;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -53,5 +53,8 @@ namespace RJWSexperience
 | 
			
		|||
        [MayRequireIdeology] public static readonly PreceptDef Incestuos_Forbidden = DefDatabase<PreceptDef>.GetNamed("Incestuos_Forbidden");
 | 
			
		||||
        [MayRequireIdeology] public static readonly PreceptDef Incestuos_IncestOnly = DefDatabase<PreceptDef>.GetNamed("Incestuos_IncestOnly");
 | 
			
		||||
        [MayRequireIdeology] public static readonly PreceptDef Incestuos_Disapproved_CloseOnly = DefDatabase<PreceptDef>.GetNamed("Incestuos_Disapproved_CloseOnly");
 | 
			
		||||
        [MayRequireIdeology] public static readonly PreceptDef BabyFaction_AlwaysMother = DefDatabase<PreceptDef>.GetNamed("BabyFaction_AlwaysMother");
 | 
			
		||||
        [MayRequireIdeology] public static readonly PreceptDef BabyFaction_AlwaysFather = DefDatabase<PreceptDef>.GetNamed("BabyFaction_AlwaysFather");
 | 
			
		||||
        [MayRequireIdeology] public static readonly PreceptDef BabyFaction_AlwaysColony = DefDatabase<PreceptDef>.GetNamed("BabyFaction_AlwaysColony");
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										
											BIN
										
									
								
								Textures/UI/Issues/SocialAffection.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Textures/UI/Issues/SocialAffection.png
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 7.3 KiB  | 
| 
						 | 
				
			
			@ -1,3 +1,13 @@
 | 
			
		|||
Version Beta 1.0.1.7
 | 
			
		||||
 - added baby faction and social affection precepts 
 | 
			
		||||
 - changed stat calculation of lust
 | 
			
		||||
   - added lust limit
 | 
			
		||||
 - added debug actions for reset lust
 | 
			
		||||
 - fixed mod setting was not saved
 | 
			
		||||
 - fixed bestiality chance
 | 
			
		||||
 - fixed errors when fuck corpse
 | 
			
		||||
 - added bastard relation(nothing special yet)
 | 
			
		||||
 | 
			
		||||
Version Beta 1.0.1.6
 | 
			
		||||
  - changed stat calculation of lust
 | 
			
		||||
    - on negative lust, use exponential function instead of linear
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue