This commit is contained in:
motd1233 2021-07-27 23:28:31 +09:00
commit 1606b006ac
51 changed files with 3916 additions and 0 deletions

343
.gitignore vendored Normal file
View File

@ -0,0 +1,343 @@
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
# User-specific files
*.rsuser
*.suo
*.user
*.userosscache
*.sln.docstates
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
[Aa][Rr][Mm]/
[Aa][Rr][Mm]64/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/
# Visual Studio 2015/2017 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/
# Visual Studio 2017 auto generated files
Generated\ Files/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
# NUNIT
*.VisualState.xml
TestResult.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
# Benchmark Results
BenchmarkDotNet.Artifacts/
# .NET Core
project.lock.json
project.fragment.lock.json
artifacts/
# StyleCop
StyleCopReport.xml
# Files built by Visual Studio
*_i.c
*_p.c
*_h.h
*.ilk
*.meta
*.obj
*.iobj
*.pch
*.pdb
*.ipdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*_wpftmp.csproj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc
# Chutzpah Test files
_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb
# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap
# Visual Studio Trace Files
*.e2e
# TFS 2012 Local Workspace
$tf/
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# JustCode is a .NET coding add-in
.JustCode
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# AxoCover is a Code Coverage Tool
.axoCover/*
!.axoCover/settings.json
# Visual Studio code coverage results
*.coverage
*.coveragexml
# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*
# MightyMoose
*.mm.*
AutoTest.Net/
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# Note: Comment the next line if you want to checkin your web deploy settings,
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj
# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/
# NuGet Packages
*.nupkg
# The packages folder can be ignored because of Package Restore
**/[Pp]ackages/*
# except build/, which is used as an MSBuild target.
!**/[Pp]ackages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/[Pp]ackages/repositories.config
# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets
# Microsoft Azure Build Output
csx/
*.build.csdef
# Microsoft Azure Emulator
ecf/
rcf/
# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
*.appx
# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!?*.[Cc]ache/
# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
orleans.codegen.cs
# Including strong name files can present a security risk
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
#*.snk
# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
ServiceFabricBackup/
*.rptproj.bak
# SQL Server files
*.mdf
*.ldf
*.ndf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
*.rptproj.rsuser
*- Backup*.rdl
# Microsoft Fakes
FakesAssemblies/
# GhostDoc plugin setting file
*.GhostDoc.xml
# Node.js Tools for Visual Studio
.ntvs_analysis.dat
node_modules/
# Visual Studio 6 build log
*.plg
# Visual Studio 6 workspace options file
*.opt
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
*.vbw
# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions
# Paket dependency manager
.paket/paket.exe
paket-files/
# FAKE - F# Make
.fake/
# JetBrains Rider
.idea/
*.sln.iml
# CodeRush personal settings
.cr/personal
# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc
# Cake - Uncomment if you are using it
# tools/**
# !tools/packages.config
# Tabs Studio
*.tss
# Telerik's JustMock configuration file
*.jmconfig
# BizTalk build output
*.btp.cs
*.btm.cs
*.odx.cs
*.xsd.cs
# OpenCover UI analysis results
OpenCover/
# Azure Stream Analytics local run output
ASALocalRun/
# MSBuild Binary and Structured Log
*.binlog
# NVidia Nsight GPU debugger configuration file
*.nvuser
# MFractors (Xamarin productivity tool) working folder
.mfractor/
# Local History for Visual Studio
.localhistory/
# BeatPulse healthcheck temp database
healthchecksdb
*.psd
*.dds

27
About/About.xml Normal file
View File

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="utf-8"?>
<ModMetaData>
<name>RJW Sexperience</name>
<author>a</author>
<supportedVersions>
<li>1.3</li>
</supportedVersions>
<modDependencies>
<li>
<packageId>brrainz.harmony</packageId>
<displayName>Harmony</displayName>
<steamWorkshopUrl>steam://url/CommunityFilePage/2009463077</steamWorkshopUrl>
<downloadUrl>https://github.com/pardeike/HarmonyRimWorld/releases/latest</downloadUrl>
</li>
<li>
<packageId>rim.job.world</packageId>
<displayName>RimJobWorld</displayName>
<downloadUrl>https://gitgud.io/Ed86/rjw</downloadUrl>
</li>
</modDependencies>
<loadAfter>
<li>brrainz.harmony</li>
<li>rim.job.world</li>
</loadAfter>
<packageId>rjw.sexperience</packageId>
<description>EXPERIMENTAL yes yes</description>
</ModMetaData>

12
About/Manifest.xml Normal file
View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Manifest>
<identifier>RJW Sexperience</identifier>
<version>1.0.1.5</version>
<dependencies>
</dependencies>
<incompatibleWith />
<loadAfter>
</loadAfter>
<suggests>
</suggests>
</Manifest>

Binary file not shown.

View File

@ -0,0 +1,33 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<!-- Agreement - same -->
<GoodwillSituationDef>
<defName>Zoophile_Zoophile</defName>
<label>zoophile agreement</label>
<workerClass>GoodwillSituationWorker_MemeCompatibility</workerClass>
<meme>Zoophile</meme>
<otherMeme>Zoophile</otherMeme>
<naturalGoodwillOffset>30</naturalGoodwillOffset>
</GoodwillSituationDef>
<!-- Disagreement -->
<GoodwillSituationDef>
<defName>Zoophile_All</defName>
<label>zoophile</label>
<workerClass>RJWSexperience.GoodwillSituationWorker_OneWayReceive</workerClass>
<meme>Zoophile</meme>
<versusAll>true</versusAll>
<naturalGoodwillOffset>-50</naturalGoodwillOffset>
</GoodwillSituationDef>
<GoodwillSituationDef>
<defName>Rapist_All</defName>
<label>rapist</label>
<workerClass>RJWSexperience.GoodwillSituationWorker_OneWayReceive</workerClass>
<meme>Rapist</meme>
<versusAll>true</versusAll>
<naturalGoodwillOffset>-20</naturalGoodwillOffset>
</GoodwillSituationDef>
</Defs>

View File

@ -0,0 +1,154 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<MemeGroupDef>
<defName>SexualDissolutely</defName>
<drawOffset>(0.65, 0.23)</drawOffset>
<maxRows>1</maxRows>
<renderOrder>3000</renderOrder>
</MemeGroupDef>
<MemeDef Name="SexualDissoulutelyBase" Abstract="True">
<groupDef>SexualDissolutely</groupDef>
<selectOneOrNone>
<noneChance>1.0</noneChance>
<preceptThingPairs>
</preceptThingPairs>
</selectOneOrNone>
</MemeDef>
<MemeDef ParentName="SexualDissoulutelyBase">
<defName>Zoophile</defName>
<label>zoophile</label>
<description>Animal fuckers.</description>
<iconPath>UI/Commands/Breeding_Pawn_off</iconPath>
<impact>3</impact>
<requireOne>
<li>
<li>Bestiality_Acceptable</li>
<li>Bestiality_OnlyVenerated</li>
<li>Bestiality_Honorable</li>
</li>
</requireOne>
<generalRules>
<rulesStrings>
<li>memeAdjective->bestial</li>
<li>memeAdjective->zoophile</li>
<li>memeHyphenPrefix->bestial</li>
<li>memeConcept->breeding</li>
<li>memeConcept->bestiality</li>
<li>memeConcept->zoophile</li>
<li>memeLeaderNoun->livestock</li>
</rulesStrings>
</generalRules>
<descriptionMaker>
<rules>
<rulesStrings>
<!-- theist myth -->
<li>creation(tag=meme_Zoophile) ->[deity0_name] loves breeding with beasts.</li>
<li>episode(uses=1,tag=meme_Zoophile) ->[deity0_name] said to all, "Sigmar forbids this!"</li>
<!-- ideological founder -->
<li>setup(tag=meme_Zoophile) ->Someday, [founderName] was so horny that accidentally fucked with an animal and loved it. </li>
<li>story(uses=1,tag=meme_Zoophile) ->For spreading animals, [founderName] started to breed with animals.</li>
<!-- ideological lesson -->
<li>lessonIntro(tag=meme_Zoophile) ->Someday, i had sex with animal. It was much better than humans!</li>
<li>lesson(tag=meme_Zoophile) ->Only the animals can satisfy me.</li>
<li>lessonReinforcement(tag=meme_Zoophile) ->Breed with animals. It is the eternal hapiness.</li>
<!-- archist -->
<li>archistBasis(tag=meme_Zoophile) ->Archists are always seeking ultimate pleasure.</li>
<li>archistFact(tag=meme_Zoophile) ->That was breeding with animals.</li>
<li>archistProphecy(tag=meme_Zoophile) ->[inTheEnd], the archotechs will finally unlock the interspecies breeding, so that they may lead ultimate pleasure.</li>
<!-- animist -->
<li>animistFact(tag=meme_Zoophile) ->The most powerful spirits are those of beasts, and spirits of beasts will be restless unless beasts rule.</li>
<li>animistProphecy(tag=meme_Zoophile) ->[itIsSaid] that a powerful spirit of destruction will seek to end the universe, but that a human-born beast will wield the spirit of the [relic0_name] and destroy the destroyer.</li>
</rulesStrings>
</rules>
</descriptionMaker>
<symbolPacks>
<li>
<ideoName>Breeders</ideoName>
<theme>breed</theme>
<adjective>bestiality</adjective>
<member>breeder</member>
</li>
<li>
<ideoName>Zoophilia</ideoName>
<theme>zoophile</theme>
<adjective>zoophile</adjective>
<member>zoophiliac</member>
</li>
</symbolPacks>
<agreeableTraits>
<li>Zoophile</li>
</agreeableTraits>
</MemeDef>
<MemeDef ParentName="SexualDissoulutelyBase">
<defName>Rapist</defName>
<label>rapist</label>
<description>Rape is best.</description>
<iconPath>UI/Memes/Rape</iconPath>
<impact>2</impact>
<requireOne>
<li>
<li>Rape_Honorable</li>
<li>Rape_Acceptable</li>
</li>
</requireOne>
<generalRules>
<rulesStrings>
<li>memeAdjective->violent</li>
<li>memeAdjective->raping</li>
<li>memeHyphenPrefix->rapist</li>
<li>memeHyphenPrefix->molester</li>
<li>memeHyphenPrefix->pervert</li>
<li>memeConcept->rapist</li>
<li>memeConcept->pervert</li>
<li>memeGod->slaanesh</li>
<li>memeLeaderNoun->stallion</li>
<li>memeLeaderNoun->grand rapist</li>
</rulesStrings>
</generalRules>
<descriptionMaker>
<rules>
<rulesStrings>
<!-- theist myth -->
<li>creation(tag=meme_Rapist) ->[deity0_name] loves rape.</li>
<li>episode(uses=1,tag=meme_Rapist) ->[deity0_name] raped everyone until death during rape.</li>
<!-- ideological founder -->
<li>setup(tag=meme_Rapist) ->[founderName] is always horny. </li>
<li>story(uses=1,tag=meme_Rapist) ->[founderName] raped everyone. No one can stop [founderName]. [founderName] died trying to rape planet.</li>
<!-- ideological lesson -->
<li>lessonIntro(tag=meme_Rapist) ->Rape is best! Rape is best! Rape is best!</li>
<li>lesson(tag=meme_Rapist) ->Rape is best! Rape is best! Rape is best! Rape is best!</li>
<li>lessonReinforcement(tag=meme_Rapist) ->Rape is best! Rape is best! Rape is best! Rape is best! Rape is best!</li>
<!-- archist -->
<li>archistBasis(tag=meme_Rapist) ->Human history is history of rape.</li>
<li>archistFact(tag=meme_Rapist) ->Even archotechs cannot stop rapists.</li>
<li>archistProphecy(tag=meme_Rapist) ->[inTheEnd], the rapists never stop raping.</li>
<!-- animist -->
<li>animistFact(tag=meme_Rapist) ->The most powerful spirits are those of rapists, and spirits of rapists will rape all.</li>
<li>animistProphecy(tag=meme_Rapist) ->[itIsSaid] that a powerful spirit of destruction will seek to end the universe, but that a million-raped rapist will wield the spirit of the [relic0_name] and rape the destroyer.</li>
</rulesStrings>
</rules>
</descriptionMaker>
<symbolPacks>
<li>
<ideoName>Rapists</ideoName>
<theme>rapist</theme>
<adjective>raping</adjective>
<member>rapist</member>
</li>
<li>
<ideoName>Cult of Slaanesh</ideoName>
<theme>pleasure</theme>
<adjective>decadent</adjective>
<member>heretic</member>
</li>
</symbolPacks>
<agreeableTraits>
<li>Rapist</li>
</agreeableTraits>
</MemeDef>
</Defs>

View File

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<PawnRelationDef>
<workerClass>PawnRelationWorker_Child</workerClass>
<defName>Bastard</defName>
<label>bastard</label>
<labelFemale>bastard</labelFemale>
<importance>190</importance>
<diedThought>MySonDied</diedThought>
<diedThoughtFemale>MyDaughterDied</diedThoughtFemale>
<killedThought>KilledMySon</killedThought>
<killedThoughtFemale>KilledMyDaughter</killedThoughtFemale>
<lostThought>MySonLost</lostThought>
<lostThoughtFemale>MyDaughterLost</lostThoughtFemale>
<soldThoughts>
<li>SoldMyLovedOne</li>
</soldThoughts>
<opinionOffset>30</opinionOffset>
<generationChanceFactor>1.0</generationChanceFactor>
<romanceChanceFactor>0.03</romanceChanceFactor>
<incestOpinionOffset>-30</incestOpinionOffset>
<implied>true</implied>
<familyByBloodRelation>true</familyByBloodRelation>
</PawnRelationDef>
</Defs>

View File

@ -0,0 +1,413 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<!-- Issues -->
<IssueDef>
<defName>Bestiality</defName>
<label>bestiality</label>
<iconPath>UI/Commands/Breeding_Pawn_off</iconPath>
</IssueDef>
<HistoryEventDef>
<defName>SexWithAnimal</defName>
<label>sex with animal</label>
</HistoryEventDef>
<HistoryEventDef>
<defName>SexWithVeneratedAnimal</defName>
<label>sex with venerated animal</label>
</HistoryEventDef>
<!-- Precepts -->
<PreceptDef>
<defName>Bestiality_Abhorrent</defName>
<issue>Bestiality</issue>
<label>abhorrent</label>
<description>Bestiality beings is deeply evil.</description>
<impact>Low</impact>
<displayOrderInIssue>40</displayOrderInIssue>
<displayOrderInImpact>100</displayOrderInImpact>
<defaultSelectionWeight>30</defaultSelectionWeight>
<conflictingMemes>
<li>Zoophile</li>
</conflictingMemes>
<associatedMemes>
<li>HumanPrimacy</li>
</associatedMemes>
<comps>
<li Class="PreceptComp_SelfTookMemoryThought">
<eventDef>SexWithVeneratedAnimal</eventDef>
<thought>Bestiality_Abhorrent</thought>
</li>
<li Class="PreceptComp_KnowsMemoryThought">
<eventDef>SexWithVeneratedAnimal</eventDef>
<thought>Bestiality_Know_Abhorrent</thought>
</li>
<li Class="PreceptComp_SelfTookMemoryThought">
<eventDef>SexWithAnimal</eventDef>
<thought>Bestiality_Abhorrent</thought>
</li>
<li Class="PreceptComp_KnowsMemoryThought">
<eventDef>SexWithAnimal</eventDef>
<thought>Bestiality_Know_Abhorrent</thought>
</li>
</comps>
</PreceptDef>
<PreceptDef>
<defName>Bestiality_Horrible</defName>
<issue>Bestiality</issue>
<label>horrible</label>
<description>Bestiality is a horrible thing.</description>
<impact>Low</impact>
<displayOrderInIssue>30</displayOrderInIssue>
<displayOrderInImpact>200</displayOrderInImpact>
<defaultSelectionWeight>30</defaultSelectionWeight>
<conflictingMemes>
<li>Zoophile</li>
</conflictingMemes>
<associatedMemes>
<li>HumanPrimacy</li>
</associatedMemes>
<comps>
<li Class="PreceptComp_SelfTookMemoryThought">
<eventDef>SexWithVeneratedAnimal</eventDef>
<thought>Bestiality_Horrible</thought>
</li>
<li Class="PreceptComp_KnowsMemoryThought">
<eventDef>SexWithVeneratedAnimal</eventDef>
<thought>Bestiality_Know_Horrible</thought>
</li>
<li Class="PreceptComp_SelfTookMemoryThought">
<eventDef>SexWithAnimal</eventDef>
<thought>Bestiality_Horrible</thought>
</li>
<li Class="PreceptComp_KnowsMemoryThought">
<eventDef>SexWithAnimal</eventDef>
<thought>Bestiality_Know_Horrible</thought>
</li>
</comps>
</PreceptDef>
<PreceptDef>
<defName>Bestiality_Disapproved</defName>
<issue>Bestiality</issue>
<label>disapproved</label>
<description>Bestiality is extremely distasteful.</description>
<impact>Low</impact>
<displayOrderInIssue>20</displayOrderInIssue>
<displayOrderInImpact>300</displayOrderInImpact>
<defaultSelectionWeight>20</defaultSelectionWeight>
<conflictingMemes>
<li>Zoophile</li>
</conflictingMemes>
<associatedMemes>
<li>HumanPrimacy</li>
</associatedMemes>
<comps>
<li Class="PreceptComp_SelfTookMemoryThought">
<eventDef>SexWithVeneratedAnimal</eventDef>
<thought>Bestiality_Disapproved</thought>
</li>
<li Class="PreceptComp_KnowsMemoryThought">
<eventDef>SexWithVeneratedAnimal</eventDef>
<thought>Bestiality_Know_Disapproved</thought>
</li>
<li Class="PreceptComp_SelfTookMemoryThought">
<eventDef>SexWithAnimal</eventDef>
<thought>Bestiality_Disapproved</thought>
</li>
<li Class="PreceptComp_KnowsMemoryThought">
<eventDef>SexWithAnimal</eventDef>
<thought>Bestiality_Know_Disapproved</thought>
</li>
</comps>
</PreceptDef>
<PreceptDef>
<defName>Bestiality_Acceptable</defName>
<issue>Bestiality</issue>
<label>acceptable</label>
<description>Bestiality is a normal, unremarkable part of life.</description>
<impact>Medium</impact>
<displayOrderInIssue>10</displayOrderInIssue>
<defaultSelectionWeight>10</defaultSelectionWeight>
<approvesOfSlavery>true</approvesOfSlavery>
</PreceptDef>
<PreceptDef>
<defName>Bestiality_OnlyVenerated</defName>
<issue>Bestiality</issue>
<label>only venerated</label>
<description>One who sex with venerated animals should be honored and respected. But having sex with other animals will be denounced</description>
<impact>High</impact>
<displayOrderInIssue>0</displayOrderInIssue>
<displayOrderInImpact>1000</displayOrderInImpact>
<conflictingMemes>
<li>HumanPrimacy</li>
</conflictingMemes>
<requiredMemes>
<li>Zoophile</li>
</requiredMemes>
<comps>
<li Class="PreceptComp_SelfTookMemoryThought">
<eventDef>SexWithAnimal</eventDef>
<thought>Bestiality_Nonvenerated_Disapproved</thought>
<onlyForNonSlaves>true</onlyForNonSlaves>
</li>
<li Class="PreceptComp_KnowsMemoryThought">
<eventDef>SexWithAnimal</eventDef>
<thought>Bestiality_Nonvenerated_Know_Disapproved</thought>
<description>Someone sex with any animal</description>
<onlyForNonSlaves>true</onlyForNonSlaves>
</li>
<li Class="PreceptComp_SelfTookMemoryThought">
<eventDef>SexWithVeneratedAnimal</eventDef>
<thought>Bestiality_Honorable</thought>
<onlyForNonSlaves>true</onlyForNonSlaves>
</li>
<li Class="PreceptComp_KnowsMemoryThought">
<eventDef>SexWithVeneratedAnimal</eventDef>
<thought>Bestiality_Know_Honorable</thought>
<description>Someone sex with animal</description>
<onlyForNonSlaves>true</onlyForNonSlaves>
</li>
</comps>
</PreceptDef>
<PreceptDef>
<defName>Bestiality_Honorable</defName>
<issue>Bestiality</issue>
<label>encouraging</label>
<description>One who sex with animals should be encouraged.</description>
<impact>High</impact>
<displayOrderInIssue>0</displayOrderInIssue>
<displayOrderInImpact>1000</displayOrderInImpact>
<conflictingMemes>
<li>HumanPrimacy</li>
</conflictingMemes>
<requiredMemes>
<li>Zoophile</li>
</requiredMemes>
<comps>
<li Class="PreceptComp_SelfTookMemoryThought">
<eventDef>SexWithAnimal</eventDef>
<thought>Bestiality_Honorable</thought>
<onlyForNonSlaves>true</onlyForNonSlaves>
</li>
<li Class="PreceptComp_KnowsMemoryThought">
<eventDef>SexWithAnimal</eventDef>
<thought>Bestiality_Know_Honorable</thought>
<description>Someone sex with animal</description>
<onlyForNonSlaves>true</onlyForNonSlaves>
</li>
</comps>
</PreceptDef>
<!-- Thoughts -->
<ThoughtDef>
<defName>Bestiality_Abhorrent</defName>
<durationDays>6</durationDays>
<stackLimit>1</stackLimit>
<nullifyingTraits>
<li>Zoophile</li>
</nullifyingTraits>
<nullifyingPrecepts>
<li>Bestiality_Honorable</li>
<li>Bestiality_OnlyVenerated</li>
<li>Bestiality_Acceptable</li>
</nullifyingPrecepts>
<stages>
<li>
<label>sex with animal</label>
<description>I had sex with animal. I want to die.</description>
<baseMoodEffect>-15</baseMoodEffect>
</li>
</stages>
</ThoughtDef>
<ThoughtDef>
<defName>Bestiality_Know_Abhorrent</defName>
<thoughtClass>Thought_MemorySocial</thoughtClass>
<durationDays>15</durationDays>
<stackLimit>100</stackLimit>
<stackLimitForSameOtherPawn>3</stackLimitForSameOtherPawn>
<nullifyingTraits>
<li>Zoophile</li>
</nullifyingTraits>
<nullifyingPrecepts>
<li>Bestiality_Honorable</li>
<li>Bestiality_OnlyVenerated</li>
<li>Bestiality_Acceptable</li>
</nullifyingPrecepts>
<stages>
<li>
<label>sex with animal</label>
<baseOpinionOffset>-30</baseOpinionOffset>
</li>
</stages>
</ThoughtDef>
<ThoughtDef>
<defName>Bestiality_Horrible</defName>
<durationDays>6</durationDays>
<stackLimit>1</stackLimit>
<nullifyingTraits>
<li>Zoophile</li>
</nullifyingTraits>
<nullifyingPrecepts>
<li>Bestiality_Honorable</li>
<li>Bestiality_OnlyVenerated</li>
<li>Bestiality_Acceptable</li>
</nullifyingPrecepts>
<stages>
<li>
<label>sex with animal</label>
<description>I had sex with animal. I'm not sure I can forgive myself.</description>
<baseMoodEffect>-10</baseMoodEffect>
</li>
</stages>
</ThoughtDef>
<ThoughtDef>
<defName>Bestiality_Know_Horrible</defName>
<thoughtClass>Thought_MemorySocial</thoughtClass>
<durationDays>15</durationDays>
<stackLimit>100</stackLimit>
<stackLimitForSameOtherPawn>3</stackLimitForSameOtherPawn>
<nullifyingTraits>
<li>Zoophile</li>
</nullifyingTraits>
<nullifyingPrecepts>
<li>Bestiality_Honorable</li>
<li>Bestiality_OnlyVenerated</li>
<li>Bestiality_Acceptable</li>
</nullifyingPrecepts>
<stages>
<li>
<label>sex with animal</label>
<baseOpinionOffset>-20</baseOpinionOffset>
</li>
</stages>
</ThoughtDef>
<ThoughtDef>
<defName>Bestiality_Disapproved</defName>
<durationDays>6</durationDays>
<stackLimit>1</stackLimit>
<nullifyingTraits>
<li>Zoophile</li>
</nullifyingTraits>
<nullifyingPrecepts>
<li>Bestiality_Honorable</li>
<li>Bestiality_OnlyVenerated</li>
<li>Bestiality_Acceptable</li>
</nullifyingPrecepts>
<stages>
<li>
<label>sex with animal</label>
<description>I had sex with animal. I hope nothing terrible happens to them.</description>
<baseMoodEffect>-5</baseMoodEffect>
</li>
</stages>
</ThoughtDef>
<ThoughtDef>
<defName>Bestiality_Know_Disapproved</defName>
<thoughtClass>Thought_MemorySocial</thoughtClass>
<durationDays>15</durationDays>
<stackLimit>100</stackLimit>
<stackLimitForSameOtherPawn>3</stackLimitForSameOtherPawn>
<nullifyingTraits>
<li>Zoophile</li>
</nullifyingTraits>
<nullifyingPrecepts>
<li>Bestiality_Honorable</li>
<li>Bestiality_OnlyVenerated</li>
<li>Bestiality_Acceptable</li>
</nullifyingPrecepts>
<stages>
<li>
<label>sex with animal</label>
<baseOpinionOffset>-10</baseOpinionOffset>
</li>
</stages>
</ThoughtDef>
<ThoughtDef>
<defName>Bestiality_Nonvenerated_Disapproved</defName>
<durationDays>6</durationDays>
<stackLimit>1</stackLimit>
<nullifyingPrecepts>
<li>Bestiality_Honorable</li>
<li>Bestiality_Acceptable</li>
</nullifyingPrecepts>
<stages>
<li>
<label>sex with non-venerated animal</label>
<description>I had sex with any animal. I hope nothing terrible happens to them.</description>
<baseMoodEffect>-5</baseMoodEffect>
</li>
</stages>
</ThoughtDef>
<ThoughtDef>
<defName>Bestiality_Nonvenerated_Know_Disapproved</defName>
<thoughtClass>Thought_MemorySocial</thoughtClass>
<durationDays>15</durationDays>
<stackLimit>100</stackLimit>
<stackLimitForSameOtherPawn>3</stackLimitForSameOtherPawn>
<nullifyingPrecepts>
<li>Bestiality_Honorable</li>
<li>Bestiality_Acceptable</li>
</nullifyingPrecepts>
<stages>
<li>
<label>sex with any animal</label>
<baseOpinionOffset>-10</baseOpinionOffset>
</li>
</stages>
</ThoughtDef>
<ThoughtDef>
<defName>Bestiality_Honorable</defName>
<durationDays>6</durationDays>
<stackLimit>1</stackLimit>
<nullifyingPrecepts>
<li>Bestiality_Abhorrent</li>
<li>Bestiality_Horrible</li>
<li>Bestiality_Disapproved</li>
</nullifyingPrecepts>
<stages>
<li>
<label>sex with animal</label>
<description>I had sex with animal.</description>
<baseMoodEffect>4</baseMoodEffect>
</li>
</stages>
</ThoughtDef>
<ThoughtDef>
<defName>Bestiality_Know_Honorable</defName>
<thoughtClass>Thought_MemorySocial</thoughtClass>
<durationDays>25</durationDays>
<stackLimit>100</stackLimit>
<stackLimitForSameOtherPawn>3</stackLimitForSameOtherPawn>
<nullifyingPrecepts>
<li>Bestiality_Abhorrent</li>
<li>Bestiality_Horrible</li>
<li>Bestiality_Disapproved</li>
</nullifyingPrecepts>
<stages>
<li>
<label>sex with animal</label>
<baseOpinionOffset>5</baseOpinionOffset>
</li>
</stages>
</ThoughtDef>
</Defs>

View File

@ -0,0 +1,389 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<!-- Issues -->
<IssueDef>
<defName>Incestuos</defName>
<label>incest</label>
<iconPath>UI/Issues/Incest</iconPath>
</IssueDef>
<HistoryEventDef>
<defName>Incestuos_Marriage</defName>
<label>Incestuos marriage</label>
</HistoryEventDef>
<!-- Precepts -->
<PreceptDef>
<defName>Incestuos_Free</defName>
<issue>Incestuos</issue>
<label>free</label>
<description>Open minded.</description>
<impact>Medium</impact>
<displayOrderInIssue>60</displayOrderInIssue>
<displayOrderInImpact>1000</displayOrderInImpact>
<defaultSelectionWeight>100</defaultSelectionWeight>
</PreceptDef>
<PreceptDef>
<defName>Incestuos_Disapproved_CloseOnly</defName>
<issue>Incestuos</issue>
<label>disapproved on close relatives</label>
<description>Incest is disapproved socially. Relations farther than cousin are recognized as not incest.</description>
<impact>Low</impact>
<displayOrderInIssue>50</displayOrderInIssue>
<displayOrderInImpact>1000</displayOrderInImpact>
<defaultSelectionWeight>100</defaultSelectionWeight>
<comps>
<li Class="PreceptComp_SelfTookMemoryThought">
<eventDef>Incestuos_Marriage</eventDef>
<thought>IncestuosMarriage_Disapproved</thought>
</li>
<li Class="RJWSexperience.PreceptComp_KnowsMemoryThoughtTagged">
<eventDef>VaginalSex</eventDef>
<thought>Sex_Know_Incest_Disapproved</thought>
<tag>Incestuos</tag>
</li>
<li Class="RJWSexperience.PreceptComp_KnowsMemoryThoughtTagged">
<eventDef>AnalSex</eventDef>
<thought>Sex_Know_Incest_Disapproved</thought>
<tag>Incestuos</tag>
</li>
<li Class="RJWSexperience.PreceptComp_KnowsMemoryThoughtTagged">
<eventDef>OralSex</eventDef>
<thought>Sex_Know_Incest_Disapproved</thought>
<tag>Incestuos</tag>
</li>
<li Class="RJWSexperience.PreceptComp_KnowsMemoryThoughtTagged">
<eventDef>MiscSex</eventDef>
<thought>Sex_Know_Incest_Disapproved</thought>
<tag>Incestuos</tag>
</li>
<li Class="RJWSexperience.PreceptComp_KnowsMemoryThoughtTagged">
<eventDef>PromiscuousSex</eventDef>
<thought>Sex_Know_Incest_Disapproved</thought>
<tag>Incestuos</tag>
</li>
</comps>
</PreceptDef>
<PreceptDef>
<defName>Incestuos_Disapproved</defName>
<issue>Incestuos</issue>
<label>disapproved</label>
<description>Incest is disapproved socially.</description>
<impact>Low</impact>
<displayOrderInIssue>40</displayOrderInIssue>
<displayOrderInImpact>1000</displayOrderInImpact>
<defaultSelectionWeight>100</defaultSelectionWeight>
<comps>
<li Class="PreceptComp_SelfTookMemoryThought">
<eventDef>Incestuos_Marriage</eventDef>
<thought>IncestuosMarriage_Disapproved</thought>
</li>
<li Class="RJWSexperience.PreceptComp_KnowsMemoryThoughtTagged">
<eventDef>Incestuos_Marriage</eventDef>
<thought>Sex_Know_IncestMarriage_Disapproved</thought>
</li>
<li Class="RJWSexperience.PreceptComp_KnowsMemoryThoughtTagged">
<eventDef>VaginalSex</eventDef>
<thought>Sex_Know_Incest_Disapproved</thought>
<tag>Incestuos</tag>
</li>
<li Class="RJWSexperience.PreceptComp_KnowsMemoryThoughtTagged">
<eventDef>AnalSex</eventDef>
<thought>Sex_Know_Incest_Disapproved</thought>
<tag>Incestuos</tag>
</li>
<li Class="RJWSexperience.PreceptComp_KnowsMemoryThoughtTagged">
<eventDef>OralSex</eventDef>
<thought>Sex_Know_Incest_Disapproved</thought>
<tag>Incestuos</tag>
</li>
<li Class="RJWSexperience.PreceptComp_KnowsMemoryThoughtTagged">
<eventDef>MiscSex</eventDef>
<thought>Sex_Know_Incest_Disapproved</thought>
<tag>Incestuos</tag>
</li>
<li Class="RJWSexperience.PreceptComp_KnowsMemoryThoughtTagged">
<eventDef>PromiscuousSex</eventDef>
<thought>Sex_Know_Incest_Disapproved</thought>
<tag>Incestuos</tag>
</li>
</comps>
</PreceptDef>
<PreceptDef>
<defName>Incestuos_Forbidden</defName>
<issue>Incestuos</issue>
<label>forbidden</label>
<description>Incest is forbidden.</description>
<impact>Low</impact>
<displayOrderInIssue>30</displayOrderInIssue>
<displayOrderInImpact>1000</displayOrderInImpact>
<defaultSelectionWeight>100</defaultSelectionWeight>
<comps>
<li Class="PreceptComp_SelfTookMemoryThought">
<eventDef>Incestuos_Marriage</eventDef>
<thought>IncestuosMarriage_Forbidden</thought>
</li>
<li Class="RJWSexperience.PreceptComp_KnowsMemoryThoughtTagged">
<eventDef>Incestuos_Marriage</eventDef>
<thought>Sex_Know_IncestMarriage_Forbidden</thought>
</li>
<li Class="RJWSexperience.PreceptComp_KnowsMemoryThoughtTagged">
<eventDef>VaginalSex</eventDef>
<thought>Sex_Know_Incest_Forbidden</thought>
<tag>Incestuos</tag>
</li>
<li Class="RJWSexperience.PreceptComp_KnowsMemoryThoughtTagged">
<eventDef>AnalSex</eventDef>
<thought>Sex_Know_Incest_Forbidden</thought>
<tag>Incestuos</tag>
</li>
<li Class="RJWSexperience.PreceptComp_KnowsMemoryThoughtTagged">
<eventDef>OralSex</eventDef>
<thought>Sex_Know_Incest_Forbidden</thought>
<tag>Incestuos</tag>
</li>
<li Class="RJWSexperience.PreceptComp_KnowsMemoryThoughtTagged">
<eventDef>MiscSex</eventDef>
<thought>Sex_Know_Incest_Forbidden</thought>
<tag>Incestuos</tag>
</li>
<li Class="RJWSexperience.PreceptComp_KnowsMemoryThoughtTagged">
<eventDef>PromiscuousSex</eventDef>
<thought>Sex_Know_Incest_Forbidden</thought>
<tag>Incestuos</tag>
</li>
</comps>
</PreceptDef>
<PreceptDef>
<defName>Incestuos_IncestOnly</defName>
<issue>Incestuos</issue>
<label>incest only</label>
<description>For preserving pure blood, only incest allowed.</description>
<impact>High</impact>
<displayOrderInIssue>0</displayOrderInIssue>
<displayOrderInImpact>1000</displayOrderInImpact>
<conflictingMemes>
<li>Zoophile</li>
</conflictingMemes>
<comps>
<li Class="RJWSexperience.PreceptComp_KnowsMemoryThoughtTagged">
<eventDef>GotMarried_SpouseCount_OneOrFewer</eventDef>
<thought>Sex_Know_IncestMarriage_Violated</thought>
<tag>Incestuos</tag>
<exclusive>true</exclusive>
</li>
<li Class="RJWSexperience.PreceptComp_KnowsMemoryThoughtTagged">
<eventDef>VaginalSex</eventDef>
<thought>Sex_Know_Incest_Violated</thought>
<tag>Incestuos</tag>
<exclusive>true</exclusive>
</li>
<li Class="RJWSexperience.PreceptComp_KnowsMemoryThoughtTagged">
<eventDef>AnalSex</eventDef>
<thought>Sex_Know_Incest_Violated</thought>
<tag>Incestuos</tag>
<exclusive>true</exclusive>
</li>
<li Class="RJWSexperience.PreceptComp_KnowsMemoryThoughtTagged">
<eventDef>OralSex</eventDef>
<thought>Sex_Know_Incest_Violated</thought>
<tag>Incestuos</tag>
<exclusive>true</exclusive>
</li>
<li Class="RJWSexperience.PreceptComp_KnowsMemoryThoughtTagged">
<eventDef>MiscSex</eventDef>
<thought>Sex_Know_Incest_Violated</thought>
<tag>Incestuos</tag>
<exclusive>true</exclusive>
</li>
<li Class="RJWSexperience.PreceptComp_KnowsMemoryThoughtTagged">
<eventDef>PromiscuousSex</eventDef>
<thought>Sex_Know_Incest_Violated</thought>
<tag>Incestuos</tag>
<exclusive>true</exclusive>
</li>
</comps>
</PreceptDef>
<!-- Thoughts -->
<ThoughtDef>
<defName>IncestuosMarriage_Forbidden</defName>
<durationDays>30</durationDays>
<stackLimit>1</stackLimit>
<nullifyingTraits>
<li>Psychopath</li>
<li>Nymphomaniac</li>
</nullifyingTraits>
<nullifyingPrecepts>
<li>Incestuos_IncestOnly</li>
<li>Incestuos_Free</li>
</nullifyingPrecepts>
<stages>
<li>
<label>social condemnation</label>
<description>No one bless our marriage.</description>
<baseMoodEffect>-10</baseMoodEffect>
</li>
</stages>
</ThoughtDef>
<ThoughtDef>
<defName>IncestuosMarriage_Disapproved</defName>
<durationDays>30</durationDays>
<stackLimit>1</stackLimit>
<nullifyingTraits>
<li>Psychopath</li>
<li>Nymphomaniac</li>
</nullifyingTraits>
<nullifyingPrecepts>
<li>Incestuos_IncestOnly</li>
<li>Incestuos_Free</li>
</nullifyingPrecepts>
<stages>
<li>
<label>being gossip</label>
<description>They are speaking behind our back.</description>
<baseMoodEffect>-5</baseMoodEffect>
</li>
</stages>
</ThoughtDef>
<ThoughtDef>
<defName>Sex_Know_Incest_Disapproved</defName>
<thoughtClass>Thought_MemorySocial</thoughtClass>
<durationDays>15</durationDays>
<stackLimit>100</stackLimit>
<stackLimitForSameOtherPawn>3</stackLimitForSameOtherPawn>
<nullifyingTraits>
<li>Nymphomaniac</li>
</nullifyingTraits>
<nullifyingPrecepts>
<li>Incestuos_IncestOnly</li>
<li>Incestuos_Free</li>
</nullifyingPrecepts>
<stages>
<li>
<label>incest</label>
<baseOpinionOffset>-15</baseOpinionOffset>
</li>
</stages>
</ThoughtDef>
<ThoughtDef>
<defName>Sex_Know_Incest_Forbidden</defName>
<thoughtClass>Thought_MemorySocial</thoughtClass>
<durationDays>15</durationDays>
<stackLimit>100</stackLimit>
<stackLimitForSameOtherPawn>3</stackLimitForSameOtherPawn>
<nullifyingTraits>
<li>Nymphomaniac</li>
</nullifyingTraits>
<nullifyingPrecepts>
<li>Incestuos_IncestOnly</li>
<li>Incestuos_Free</li>
</nullifyingPrecepts>
<stages>
<li>
<label>incest</label>
<baseOpinionOffset>-30</baseOpinionOffset>
</li>
</stages>
</ThoughtDef>
<ThoughtDef>
<defName>Sex_Know_IncestMarriage_Disapproved</defName>
<thoughtClass>Thought_MemorySocial</thoughtClass>
<durationDays>60</durationDays>
<stackLimit>100</stackLimit>
<stackLimitForSameOtherPawn>3</stackLimitForSameOtherPawn>
<nullifyingTraits>
<li>Nymphomaniac</li>
</nullifyingTraits>
<nullifyingPrecepts>
<li>Incestuos_IncestOnly</li>
<li>Incestuos_Free</li>
</nullifyingPrecepts>
<stages>
<li>
<label>incest</label>
<baseOpinionOffset>-15</baseOpinionOffset>
</li>
</stages>
</ThoughtDef>
<ThoughtDef>
<defName>Sex_Know_IncestMarriage_Forbidden</defName>
<thoughtClass>Thought_MemorySocial</thoughtClass>
<durationDays>60</durationDays>
<stackLimit>100</stackLimit>
<stackLimitForSameOtherPawn>3</stackLimitForSameOtherPawn>
<nullifyingTraits>
<li>Nymphomaniac</li>
</nullifyingTraits>
<nullifyingPrecepts>
<li>Incestuos_IncestOnly</li>
<li>Incestuos_Free</li>
</nullifyingPrecepts>
<stages>
<li>
<label>incest</label>
<baseOpinionOffset>-30</baseOpinionOffset>
</li>
</stages>
</ThoughtDef>
<ThoughtDef>
<defName>Sex_Know_Incest_Violated</defName>
<thoughtClass>Thought_MemorySocial</thoughtClass>
<durationDays>15</durationDays>
<stackLimit>100</stackLimit>
<stackLimitForSameOtherPawn>3</stackLimitForSameOtherPawn>
<nullifyingTraits>
<li>Nymphomaniac</li>
</nullifyingTraits>
<nullifyingPrecepts>
<li>Incestuos_Disapproved_CloseOnly</li>
<li>Incestuos_Disapproved</li>
<li>Incestuos_Forbidden</li>
<li>Incestuos_Free</li>
</nullifyingPrecepts>
<stages>
<li>
<label>sex with non-family</label>
<baseOpinionOffset>-15</baseOpinionOffset>
</li>
</stages>
</ThoughtDef>
<ThoughtDef>
<defName>Sex_Know_IncestMarriage_Violated</defName>
<thoughtClass>Thought_MemorySocial</thoughtClass>
<durationDays>300</durationDays>
<stackLimit>100</stackLimit>
<stackLimitForSameOtherPawn>3</stackLimitForSameOtherPawn>
<nullifyingTraits>
<li>Nymphomaniac</li>
</nullifyingTraits>
<nullifyingPrecepts>
<li>Incestuos_Disapproved_CloseOnly</li>
<li>Incestuos_Disapproved</li>
<li>Incestuos_Forbidden</li>
<li>Incestuos_Free</li>
</nullifyingPrecepts>
<stages>
<li>
<label>corrupt the blood</label>
<baseOpinionOffset>-50</baseOpinionOffset>
</li>
</stages>
</ThoughtDef>
</Defs>

View File

@ -0,0 +1,366 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<!-- Issues -->
<IssueDef>
<defName>Rape</defName>
<label>rape</label>
<iconPath>UI/Issues/Rape</iconPath>
</IssueDef>
<HistoryEventDef>
<defName>Raped</defName>
<label>raped</label>
</HistoryEventDef>
<HistoryEventDef>
<defName>RapedSlave</defName>
<label>raped slave</label>
</HistoryEventDef>
<HistoryEventDef>
<defName>RapedPrisoner</defName>
<label>raped prisoner</label>
</HistoryEventDef>
<HistoryEventDef>
<defName>WasRaped</defName>
<label>was raped</label>
</HistoryEventDef>
<HistoryEventDef>
<defName>WasRapedSlave</defName>
<label>was raped</label>
</HistoryEventDef>
<HistoryEventDef>
<defName>WasRapedPrisoner</defName>
<label>was raped</label>
</HistoryEventDef>
<!-- Precepts -->
<PreceptDef>
<defName>Rape_Abhorrent</defName>
<issue>Rape</issue>
<label>abhorrent</label>
<description>Rape beings is deeply evil.</description>
<impact>Low</impact>
<displayOrderInIssue>40</displayOrderInIssue>
<displayOrderInImpact>1000</displayOrderInImpact>
<defaultSelectionWeight>30</defaultSelectionWeight>
<conflictingMemes>
<li>Rapist</li>
</conflictingMemes>
<associatedMemes>
<li>HumanPrimacy</li>
<li>Collectivist</li>
</associatedMemes>
<comps>
<li Class="PreceptComp_SelfTookMemoryThought">
<eventDef>Raped</eventDef>
<thought>Rape_Abhorrent</thought>
</li>
<li Class="PreceptComp_KnowsMemoryThought">
<eventDef>Raped</eventDef>
<thought>Rape_Know_Abhorrent</thought>
<description>Someone raped other</description>
</li>
<li Class="PreceptComp_SelfTookMemoryThought">
<eventDef>RapedPrisoner</eventDef>
<thought>Rape_Horrible</thought>
<description>Raped prisoner</description>
</li>
<li Class="PreceptComp_KnowsMemoryThought">
<eventDef>RapedPrisoner</eventDef>
<thought>Rape_Know_Horrible</thought>
<description>Someone raped prisoner</description>
</li>
<li Class="PreceptComp_SelfTookMemoryThought">
<eventDef>RapedSlave</eventDef>
<thought>Rape_Disapproved</thought>
<description>Raped slave</description>
</li>
<li Class="PreceptComp_KnowsMemoryThought">
<eventDef>RapedSlave</eventDef>
<thought>Rape_Know_Disapproved</thought>
<description>Someone raped slave</description>
</li>
</comps>
</PreceptDef>
<PreceptDef>
<defName>Rape_Horrible</defName>
<issue>Rape</issue>
<label>horrible</label>
<description>Raping other is a horrible thing.</description>
<impact>Low</impact>
<displayOrderInIssue>30</displayOrderInIssue>
<displayOrderInImpact>1000</displayOrderInImpact>
<defaultSelectionWeight>30</defaultSelectionWeight>
<conflictingMemes>
<li>Rapist</li>
</conflictingMemes>
<associatedMemes>
<li>HumanPrimacy</li>
</associatedMemes>
<comps>
<li Class="PreceptComp_SelfTookMemoryThought">
<eventDef>Raped</eventDef>
<thought>Rape_Horrible</thought>
</li>
<li Class="PreceptComp_KnowsMemoryThought">
<eventDef>Raped</eventDef>
<thought>Rape_Know_Horrible</thought>
<description>Someone raped other</description>
</li>
<li Class="PreceptComp_SelfTookMemoryThought">
<eventDef>RapedPrisoner</eventDef>
<thought>Rape_Disapproved</thought>
<description>Raped prisoner</description>
</li>
<li Class="PreceptComp_KnowsMemoryThought">
<eventDef>RapedPrisoner</eventDef>
<thought>Rape_Know_Disapproved</thought>
<description>Someone raped prisoner</description>
</li>
</comps>
</PreceptDef>
<PreceptDef>
<defName>Rape_Disapproved</defName>
<issue>Rape</issue>
<label>disapproved</label>
<description>Rape is part of life, though it is extremely distasteful.</description>
<impact>Medium</impact>
<displayOrderInIssue>20</displayOrderInIssue>
<displayOrderInImpact>1000</displayOrderInImpact>
<defaultSelectionWeight>20</defaultSelectionWeight>
<conflictingMemes>
<li>Rapist</li>
</conflictingMemes>
<associatedMemes>
<li>HumanPrimacy</li>
</associatedMemes>
<comps>
<li Class="PreceptComp_SelfTookMemoryThought">
<eventDef>Raped</eventDef>
<thought>Rape_Disapproved</thought>
</li>
<li Class="PreceptComp_KnowsMemoryThought">
<eventDef>Raped</eventDef>
<thought>Rape_Know_Disapproved</thought>
<description>Someone raped other</description>
</li>
</comps>
</PreceptDef>
<PreceptDef>
<defName>Rape_Acceptable</defName>
<issue>Rape</issue>
<label>acceptable</label>
<description>Rape is a normal, unremarkable part of life.</description>
<impact>High</impact>
<displayOrderInIssue>10</displayOrderInIssue>
<defaultSelectionWeight>10</defaultSelectionWeight>
<approvesOfSlavery>true</approvesOfSlavery>
</PreceptDef>
<PreceptDef>
<defName>Rape_Honorable</defName>
<issue>Rape</issue>
<label>proud</label>
<description>Raping is one of proud behavior.</description>
<impact>High</impact>
<displayOrderInIssue>0</displayOrderInIssue>
<displayOrderInImpact>1000</displayOrderInImpact>
<conflictingMemes>
<li>HumanPrimacy</li>
</conflictingMemes>
<requiredMemes>
<li>Rapist</li>
</requiredMemes>
<statFactors>
<Vulnerability>0.75</Vulnerability>
</statFactors>
<comps>
<li Class="PreceptComp_SelfTookMemoryThought">
<eventDef>Raped</eventDef>
<thought>BloodlustStoleSomeLovin</thought>
<onlyForNonSlaves>true</onlyForNonSlaves>
</li>
<li Class="RJWSexperience.PreceptComp_KnowsMemoryThoughtTagged">
<eventDef>Raped</eventDef>
<thought>Rape_Know_Honorable</thought>
<description>Someone raped other</description>
<onlyForNonSlaves>true</onlyForNonSlaves>
</li>
<li Class="PreceptComp_SelfTookMemoryThought">
<eventDef>RapedPrisoner</eventDef>
<thought>BloodlustStoleSomeLovin</thought>
<onlyForNonSlaves>true</onlyForNonSlaves>
</li>
<li Class="PreceptComp_KnowsMemoryThought">
<eventDef>RapedPrisoner</eventDef>
<thought>Rape_Know_Honorable</thought>
<description>Someone raped other</description>
<onlyForNonSlaves>true</onlyForNonSlaves>
</li>
<li Class="PreceptComp_SelfTookMemoryThought">
<eventDef>RapedSlave</eventDef>
<thought>BloodlustStoleSomeLovin</thought>
<onlyForNonSlaves>true</onlyForNonSlaves>
</li>
<li Class="PreceptComp_KnowsMemoryThought">
<eventDef>RapedSlave</eventDef>
<thought>Rape_Know_Honorable</thought>
<description>Someone raped other</description>
<onlyForNonSlaves>true</onlyForNonSlaves>
</li>
</comps>
</PreceptDef>
<!-- Thoughts -->
<ThoughtDef>
<defName>Rape_Abhorrent</defName>
<durationDays>6</durationDays>
<stackLimit>1</stackLimit>
<nullifyingTraits>
<li>Rapist</li>
</nullifyingTraits>
<nullifyingPrecepts>
<li>Rape_Honorable</li>
<li>Rape_Acceptable</li>
</nullifyingPrecepts>
<stages>
<li>
<label>raped someone</label>
<description>I raped someone. I shouldn't do that.</description>
<baseMoodEffect>-5</baseMoodEffect>
</li>
</stages>
</ThoughtDef>
<ThoughtDef>
<defName>Rape_Know_Abhorrent</defName>
<thoughtClass>Thought_MemorySocial</thoughtClass>
<durationDays>15</durationDays>
<stackLimit>100</stackLimit>
<stackLimitForSameOtherPawn>3</stackLimitForSameOtherPawn>
<nullifyingTraits>
<li>Rapist</li>
</nullifyingTraits>
<nullifyingPrecepts>
<li>Rape_Honorable</li>
<li>Rape_Acceptable</li>
</nullifyingPrecepts>
<stages>
<li>
<label>raped someone</label>
<baseOpinionOffset>-30</baseOpinionOffset>
</li>
</stages>
</ThoughtDef>
<ThoughtDef>
<defName>Rape_Horrible</defName>
<durationDays>6</durationDays>
<stackLimit>1</stackLimit>
<nullifyingTraits>
<li>Rapist</li>
</nullifyingTraits>
<nullifyingPrecepts>
<li>Rape_Honorable</li>
<li>Rape_Acceptable</li>
</nullifyingPrecepts>
<stages>
<li>
<label>raped someone</label>
<description>I raped someone. I shouldn't do that.</description>
<baseMoodEffect>-3</baseMoodEffect>
</li>
</stages>
</ThoughtDef>
<ThoughtDef>
<defName>Rape_Know_Horrible</defName>
<thoughtClass>Thought_MemorySocial</thoughtClass>
<durationDays>15</durationDays>
<stackLimit>100</stackLimit>
<stackLimitForSameOtherPawn>3</stackLimitForSameOtherPawn>
<nullifyingTraits>
<li>Rapist</li>
</nullifyingTraits>
<nullifyingPrecepts>
<li>Rape_Honorable</li>
<li>Rape_Acceptable</li>
</nullifyingPrecepts>
<stages>
<li>
<label>raped someone</label>
<baseOpinionOffset>-15</baseOpinionOffset>
</li>
</stages>
</ThoughtDef>
<ThoughtDef>
<defName>Rape_Disapproved</defName>
<durationDays>6</durationDays>
<stackLimit>1</stackLimit>
<nullifyingTraits>
<li>Rapist</li>
</nullifyingTraits>
<nullifyingPrecepts>
<li>Rape_Honorable</li>
<li>Rape_Acceptable</li>
</nullifyingPrecepts>
<stages>
<li>
<label>raped someone</label>
<description>I raped someone. I shouldn't do that.</description>
<baseMoodEffect>-1</baseMoodEffect>
</li>
</stages>
</ThoughtDef>
<ThoughtDef>
<defName>Rape_Know_Disapproved</defName>
<thoughtClass>Thought_MemorySocial</thoughtClass>
<durationDays>15</durationDays>
<stackLimit>100</stackLimit>
<stackLimitForSameOtherPawn>3</stackLimitForSameOtherPawn>
<nullifyingTraits>
<li>Rapist</li>
</nullifyingTraits>
<nullifyingPrecepts>
<li>Rape_Honorable</li>
<li>Rape_Acceptable</li>
</nullifyingPrecepts>
<stages>
<li>
<label>raped someone</label>
<baseOpinionOffset>-5</baseOpinionOffset>
</li>
</stages>
</ThoughtDef>
<ThoughtDef>
<defName>Rape_Know_Honorable</defName>
<thoughtClass>Thought_MemorySocial</thoughtClass>
<durationDays>25</durationDays>
<stackLimit>100</stackLimit>
<stackLimitForSameOtherPawn>3</stackLimitForSameOtherPawn>
<nullifyingPrecepts>
<li>Rape_Abhorrent</li>
<li>Rape_Disapproved</li>
</nullifyingPrecepts>
<stages>
<li>
<label>raped someone</label>
<baseOpinionOffset>1</baseOpinionOffset>
</li>
</stages>
</ThoughtDef>
</Defs>

View File

@ -0,0 +1,332 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<!-- Issues -->
<IssueDef>
<defName>Sextype</defName>
<label>sex type</label>
<iconPath>UI/Issues/Bestiality</iconPath>
</IssueDef>
<HistoryEventDef>
<defName>VaginalSex</defName>
<label>vaginal sex</label>
</HistoryEventDef>
<HistoryEventDef>
<defName>AnalSex</defName>
<label>anal sex</label>
</HistoryEventDef>
<HistoryEventDef>
<defName>OralSex</defName>
<label>oral sex</label>
</HistoryEventDef>
<HistoryEventDef>
<defName>MiscSex</defName>
<label>sex</label>
</HistoryEventDef>
<HistoryEventDef>
<defName>PromiscuousSex</defName>
<label>promiscuous sex</label>
</HistoryEventDef>
<!-- Precepts -->
<PreceptDef>
<defName>Sex_Free</defName>
<issue>Sextype</issue>
<label>free</label>
<description>Open minded.</description>
<impact>Low</impact>
<displayOrderInIssue>50</displayOrderInIssue>
<displayOrderInImpact>1000</displayOrderInImpact>
<defaultSelectionWeight>100</defaultSelectionWeight>
</PreceptDef>
<PreceptDef>
<defName>Sex_VaginalOnly</defName>
<issue>Sextype</issue>
<label>vaginal only</label>
<description>Only vaginal sex is approval and others are crude.</description>
<impact>Low</impact>
<displayOrderInIssue>40</displayOrderInIssue>
<displayOrderInImpact>1000</displayOrderInImpact>
<defaultSelectionWeight>100</defaultSelectionWeight>
<comps>
<li Class="PreceptComp_SelfTookMemoryThought">
<eventDef>AnalSex</eventDef>
<thought>Sex_Promiscuous</thought>
</li>
<li Class="RJWSexperience.PreceptComp_KnowsMemoryThoughtTagged">
<eventDef>AnalSex</eventDef>
<thought>Sex_Know_Promiscuous</thought>
</li>
<li Class="PreceptComp_SelfTookMemoryThought">
<eventDef>OralSex</eventDef>
<thought>Sex_Promiscuous</thought>
</li>
<li Class="RJWSexperience.PreceptComp_KnowsMemoryThoughtTagged">
<eventDef>OralSex</eventDef>
<thought>Sex_Know_Promiscuous</thought>
</li>
<li Class="PreceptComp_SelfTookMemoryThought">
<eventDef>MiscSex</eventDef>
<thought>Sex_Promiscuous</thought>
</li>
<li Class="RJWSexperience.PreceptComp_KnowsMemoryThoughtTagged">
<eventDef>MiscSex</eventDef>
<thought>Sex_Know_Promiscuous</thought>
</li>
<li Class="PreceptComp_SelfTookMemoryThought">
<eventDef>PromiscuousSex</eventDef>
<thought>Sex_Promiscuous</thought>
</li>
<li Class="RJWSexperience.PreceptComp_KnowsMemoryThoughtTagged">
<eventDef>PromiscuousSex</eventDef>
<thought>Sex_Know_Promiscuous</thought>
</li>
</comps>
</PreceptDef>
<PreceptDef>
<defName>Sex_AnalOnly</defName>
<issue>Sextype</issue>
<label>anal only</label>
<description>Only anal sex is approval and others are crude.</description>
<impact>Medium</impact>
<displayOrderInIssue>30</displayOrderInIssue>
<displayOrderInImpact>1000</displayOrderInImpact>
<defaultSelectionWeight>10</defaultSelectionWeight>
<comps>
<li Class="PreceptComp_SelfTookMemoryThought">
<eventDef>VaginalSex</eventDef>
<thought>Sex_Promiscuous</thought>
</li>
<li Class="RJWSexperience.PreceptComp_KnowsMemoryThoughtTagged">
<eventDef>VaginalSex</eventDef>
<thought>Sex_Know_Promiscuous</thought>
</li>
<li Class="PreceptComp_SelfTookMemoryThought">
<eventDef>OralSex</eventDef>
<thought>Sex_Promiscuous</thought>
</li>
<li Class="RJWSexperience.PreceptComp_KnowsMemoryThoughtTagged">
<eventDef>OralSex</eventDef>
<thought>Sex_Know_Promiscuous</thought>
</li>
<li Class="PreceptComp_SelfTookMemoryThought">
<eventDef>MiscSex</eventDef>
<thought>Sex_Promiscuous</thought>
</li>
<li Class="RJWSexperience.PreceptComp_KnowsMemoryThoughtTagged">
<eventDef>MiscSex</eventDef>
<thought>Sex_Know_Promiscuous</thought>
</li>
<li Class="PreceptComp_SelfTookMemoryThought">
<eventDef>PromiscuousSex</eventDef>
<thought>Sex_Promiscuous</thought>
</li>
<li Class="RJWSexperience.PreceptComp_KnowsMemoryThoughtTagged">
<eventDef>PromiscuousSex</eventDef>
<thought>Sex_Know_Promiscuous</thought>
</li>
</comps>
</PreceptDef>
<PreceptDef>
<defName>Sex_OralOnly</defName>
<issue>Sextype</issue>
<label>oral only</label>
<description>Only oral sex is approval and others are crude.</description>
<impact>Medium</impact>
<displayOrderInIssue>20</displayOrderInIssue>
<displayOrderInImpact>1000</displayOrderInImpact>
<defaultSelectionWeight>5</defaultSelectionWeight>
<comps>
<li Class="PreceptComp_SelfTookMemoryThought">
<eventDef>VaginalSex</eventDef>
<thought>Sex_Promiscuous</thought>
</li>
<li Class="RJWSexperience.PreceptComp_KnowsMemoryThoughtTagged">
<eventDef>VaginalSex</eventDef>
<thought>Sex_Know_Promiscuous</thought>
</li>
<li Class="PreceptComp_SelfTookMemoryThought">
<eventDef>AnalSex</eventDef>
<thought>Sex_Promiscuous</thought>
</li>
<li Class="RJWSexperience.PreceptComp_KnowsMemoryThoughtTagged">
<eventDef>AnalSex</eventDef>
<thought>Sex_Know_Promiscuous</thought>
</li>
<li Class="PreceptComp_SelfTookMemoryThought">
<eventDef>MiscSex</eventDef>
<thought>Sex_Promiscuous</thought>
</li>
<li Class="RJWSexperience.PreceptComp_KnowsMemoryThoughtTagged">
<eventDef>MiscSex</eventDef>
<thought>Sex_Know_Promiscuous</thought>
</li>
<li Class="PreceptComp_SelfTookMemoryThought">
<eventDef>PromiscuousSex</eventDef>
<thought>Sex_Promiscuous</thought>
</li>
<li Class="RJWSexperience.PreceptComp_KnowsMemoryThoughtTagged">
<eventDef>PromiscuousSex</eventDef>
<thought>Sex_Know_Promiscuous</thought>
</li>
</comps>
</PreceptDef>
<PreceptDef>
<defName>Sex_Promiscuous</defName>
<issue>Sextype</issue>
<label>promiscuous</label>
<description>Messy sex life is approved.</description>
<impact>High</impact>
<displayOrderInIssue>0</displayOrderInIssue>
<displayOrderInImpact>1000</displayOrderInImpact>
<statFactors>
<SexFrequency>1.5</SexFrequency>
<SexAbility>1.25</SexAbility>
</statFactors>
<comps>
<li Class="PreceptComp_SelfTookMemoryThought">
<eventDef>VaginalSex</eventDef>
<thought>Sex_NonPromiscuous</thought>
</li>
<li Class="PreceptComp_KnowsMemoryThought">
<eventDef>VaginalSex</eventDef>
<thought>Sex_Know_NonPromiscuous</thought>
</li>
<li Class="PreceptComp_SelfTookMemoryThought">
<eventDef>AnalSex</eventDef>
<thought>Sex_NonPromiscuous</thought>
</li>
<li Class="PreceptComp_KnowsMemoryThought">
<eventDef>AnalSex</eventDef>
<thought>Sex_Know_NonPromiscuous</thought>
</li>
<li Class="PreceptComp_SelfTookMemoryThought">
<eventDef>OralSex</eventDef>
<thought>Sex_NonPromiscuous</thought>
</li>
<li Class="PreceptComp_KnowsMemoryThought">
<eventDef>OralSex</eventDef>
<thought>Sex_Know_NonPromiscuous</thought>
</li>
<li Class="PreceptComp_SelfTookMemoryThought">
<eventDef>MiscSex</eventDef>
<thought>Sex_NonPromiscuous</thought>
</li>
<li Class="PreceptComp_KnowsMemoryThought">
<eventDef>MiscSex</eventDef>
<thought>Sex_Know_NonPromiscuous</thought>
</li>
<li Class="PreceptComp_KnowsMemoryThought">
<eventDef>PromiscuousSex</eventDef>
<thought>Sex_Know_Promiscuous_Approval</thought>
</li>
</comps>
</PreceptDef>
<!-- Thoughts -->
<RJWSexperience.ThoughtDef_Recordbased>
<defName>Sex_Promiscuous</defName>
<durationDays>1</durationDays>
<stackLimit>1</stackLimit>
<thoughtClass>RJWSexperience.Thought_IncreaseRecord</thoughtClass>
<recordDef>Lust</recordDef>
<increment>3.0</increment>
<stages>
<li>
<label>promiscuous sex</label>
<description>I was immoral. It makes me aroused.</description>
<baseMoodEffect>5</baseMoodEffect>
</li>
</stages>
</RJWSexperience.ThoughtDef_Recordbased>
<ThoughtDef>
<defName>Sex_NonPromiscuous</defName>
<durationDays>1</durationDays>
<stackLimit>1</stackLimit>
<stages>
<li>
<label>ordinary sex</label>
<description>It cannot satisfy me.</description>
<baseMoodEffect>-1</baseMoodEffect>
</li>
</stages>
</ThoughtDef>
<ThoughtDef>
<defName>Sex_Know_Promiscuous</defName>
<thoughtClass>Thought_MemorySocial</thoughtClass>
<durationDays>15</durationDays>
<stackLimit>100</stackLimit>
<stackLimitForSameOtherPawn>3</stackLimitForSameOtherPawn>
<nullifyingTraits>
<li>Nymphomaniac</li>
<li>Zoophile</li>
<li>Rapist</li>
<li>Necrophiliac</li>
<li>Gay</li>
<li>Bisexual</li>
</nullifyingTraits>
<nullifyingPrecepts>
<li>Sex_Free</li>
<li>Sex_Promiscuous</li>
</nullifyingPrecepts>
<stages>
<li>
<label>promiscuous</label>
<baseOpinionOffset>-10</baseOpinionOffset>
</li>
</stages>
</ThoughtDef>
<ThoughtDef>
<defName>Sex_Know_Promiscuous_Approval</defName>
<thoughtClass>Thought_MemorySocial</thoughtClass>
<durationDays>15</durationDays>
<stackLimit>100</stackLimit>
<stackLimitForSameOtherPawn>3</stackLimitForSameOtherPawn>
<nullifyingPrecepts>
<li>Sex_VaginalOnly</li>
<li>Sex_AnalOnly</li>
<li>Sex_OralOnly</li>
</nullifyingPrecepts>
<stages>
<li>
<label>promiscuous</label>
<baseOpinionOffset>3</baseOpinionOffset>
</li>
</stages>
</ThoughtDef>
<ThoughtDef>
<defName>Sex_Know_NonPromiscuous</defName>
<thoughtClass>Thought_MemorySocial</thoughtClass>
<durationDays>15</durationDays>
<stackLimit>100</stackLimit>
<stackLimitForSameOtherPawn>3</stackLimitForSameOtherPawn>
<nullifyingPrecepts>
<li>Sex_VaginalOnly</li>
<li>Sex_AnalOnly</li>
<li>Sex_OralOnly</li>
<li>Sex_Free</li>
</nullifyingPrecepts>
<stages>
<li>
<label>boring</label>
<baseOpinionOffset>-3</baseOpinionOffset>
</li>
</stages>
</ThoughtDef>
</Defs>

View File

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<RecordDef>
<defName>NumofEatenCum</defName>
<label>swallowed cum</label>
<description>The number of times that i swalloed cum.</description>
<type>Int</type>
</RecordDef>
<RecordDef>
<defName>Lust</defName>
<label>lust</label>
<description>How lustful i am.</description>
<type>Float</type>
</RecordDef>
</Defs>

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<SkillDef>
<defName>Sex</defName>
<description>Sex skill.</description>
<skillLabel>sex</skillLabel>
<listOrder>5</listOrder>
</SkillDef>
</Defs>

View File

@ -0,0 +1,73 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<ThingDef ParentName="OrganicProductBase">
<defName>GatheredCum</defName>
<label>cum</label>
<description>Gathered cum.</description>
<thingCategories>
<li>AnimalProductRaw</li>
</thingCategories>
<graphicData>
<texPath>Things/Item/GatheredCum</texPath>
<drawSize>1</drawSize>
<graphicClass>Graphic_StackCount</graphicClass>
</graphicData>
<socialPropernessMatters>true</socialPropernessMatters>
<statBases>
<MarketValue>0.1</MarketValue>
<Mass>0.1</Mass>
<Nutrition>0.01</Nutrition>
<Beauty>-5</Beauty>
<Cleanliness>-1</Cleanliness>
<FoodPoisonChanceFixedHuman>0.00</FoodPoisonChanceFixedHuman>
<DeteriorationRate>60</DeteriorationRate>
<Flammability>0.1</Flammability>
</statBases>
<ingestible>
<foodType>Fluid, AnimalProduct</foodType>
<preferability>DesperateOnlyForHumanlikes</preferability>
<tasteThought>AteCum</tasteThought>
<specialThoughtAsIngredient>AteCum</specialThoughtAsIngredient>
<optimalityOffsetHumanlikes>-10</optimalityOffsetHumanlikes>
<optimalityOffsetFeedingAnimals>-10</optimalityOffsetFeedingAnimals>
</ingestible>
</ThingDef>
<ThingDef ParentName="PlantFoodRawBase">
<defName>UsedCondom</defName>
<label>Used Condom</label>
<description>A condom filled with sperm. MMMM So good and tasty!</description>
<graphicData>
<texPath>Things/Item/UsedCondom</texPath>
<graphicClass>Graphic_StackCount</graphicClass>
</graphicData>
<stackLimit>50</stackLimit>
<useHitPoints>true</useHitPoints>
<selectable>true</selectable>
<generateCommonality>0.0</generateCommonality>
<techLevel>Industrial</techLevel>
<statBases>
<Beauty>-10</Beauty>
<MarketValue>1</MarketValue>
<Mass>0.05</Mass>
<Nutrition>0.05</Nutrition>
</statBases>
<ingestible>
<foodType>Fluid, AnimalProduct</foodType>
<preferability>DesperateOnlyForHumanlikes</preferability>
<tasteThought>AteCum</tasteThought>
<specialThoughtAsIngredient>AteCum</specialThoughtAsIngredient>
</ingestible>
<altitudeLayer>Item</altitudeLayer>
<tickerType>Never</tickerType>
<tradeTags>
<li>Exotic</li>
</tradeTags>
<tradeability>Sellable</tradeability>
<thingCategories>
<li>AnimalProductRaw</li>
</thingCategories>
</ThingDef>
</Defs>

View File

@ -0,0 +1,41 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<RJWSexperience.ThoughtDef_Recordbased>
<defName>AteCum</defName>
<durationDays>0.5</durationDays>
<stackLimit>1</stackLimit>
<stackedEffectMultiplier>0.4</stackedEffectMultiplier>
<recordDef>NumofEatenCum</recordDef>
<thoughtClass>RJWSexperience.Thought_AteCum</thoughtClass>
<minimumValueforStage>
<li>10</li>
<li>60</li>
<li>120</li>
</minimumValueforStage>
<stages>
<li>
<label>ate cum</label>
<description>Disgusting.</description>
<baseMoodEffect>-5</baseMoodEffect>
</li>
<li>
<label>ate cum</label>
<description>Tastes bad and stinky.</description>
<baseMoodEffect>-2</baseMoodEffect>
</li>
<li>
<label>ate cum</label>
<description>Tastes bad. But i liked it.</description>
<baseMoodEffect>1</baseMoodEffect>
</li>
<li>
<label>ate cum</label>
<description>Delicious.</description>
<baseMoodEffect>3</baseMoodEffect>
</li>
</stages>
</RJWSexperience.ThoughtDef_Recordbased>
</Defs>

21
LICENSE Normal file
View File

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2021 motd1233
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<LanguageData>
<LustStatFactor>Lust: x{0}%</LustStatFactor>
<SlaveStatFactor>Slave: x{0}%</SlaveStatFactor>
<SlaveStatFactorDefault>Not Slave: x100%</SlaveStatFactorDefault>
<MemeStatFactor>Meme: x{0}%</MemeStatFactor>
</LanguageData>

View File

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<LanguageData>
<SexWithAnimal.label>동물과 교미</SexWithAnimal.label>
<SexWithVeneratedAnimal.label>숭배받는 동물과 교미</SexWithVeneratedAnimal.label>
<Raped.label>강간</Raped.label>
<RapedSlave.label>노예 강간</RapedSlave.label>
<RapedPrisoner.label>죄수 강간</RapedPrisoner.label>
<VaginalSex.label>보지 섹스</VaginalSex.label>
<AnalSex.label>항문 성교</AnalSex.label>
<OralSex.label>구강 성교</OralSex.label>
<MiscSex.label>섹스</MiscSex.label>
<PromiscuousSex.label>문란한 섹스</PromiscuousSex.label>
<Incestuos_Marriage.label>근친혼</Incestuos_Marriage.label>
</LanguageData>

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<LanguageData>
<Sextype.label>섹스 종류</Sextype.label>
<Rape.label>강간</Rape.label>
<Bestiality.label>수간</Bestiality.label>
<Incestuos.label>근친상간</Incestuos.label>
</LanguageData>

View File

@ -0,0 +1,65 @@
<?xml version="1.0" encoding="utf-8"?>
<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.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>
<Zoophile.generalRules.rulesStrings.5>memeConcept->수간</Zoophile.generalRules.rulesStrings.5>
<Zoophile.generalRules.rulesStrings.6>memeLeaderNoun->가축</Zoophile.generalRules.rulesStrings.6>
<Zoophile.symbolPacks.0.ideoName>번식모판</Zoophile.symbolPacks.0.ideoName>
<Zoophile.symbolPacks.0.theme>번식</Zoophile.symbolPacks.0.theme>
<Zoophile.symbolPacks.0.adjective>수간</Zoophile.symbolPacks.0.adjective>
<Zoophile.symbolPacks.0.member>번식기</Zoophile.symbolPacks.0.member>
<Zoophile.symbolPacks.1.ideoName>포켓몬스터 갤러리</Zoophile.symbolPacks.1.ideoName>
<Zoophile.symbolPacks.1.theme>수간</Zoophile.symbolPacks.1.theme>
<Zoophile.symbolPacks.1.adjective>수간</Zoophile.symbolPacks.1.adjective>
<Zoophile.symbolPacks.1.member>수간충</Zoophile.symbolPacks.1.member>
<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.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.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.7>memeGod->슬라네쉬</Rapist.generalRules.rulesStrings.7>
<Rapist.generalRules.rulesStrings.8>memeLeaderNoun->종마</Rapist.generalRules.rulesStrings.8>
<Rapist.generalRules.rulesStrings.9>memeLeaderNoun->위대한 강간범</Rapist.generalRules.rulesStrings.9>
<Rapist.symbolPacks.0.ideoName>강간범들</Rapist.symbolPacks.0.ideoName>
<Rapist.symbolPacks.0.theme>강간</Rapist.symbolPacks.0.theme>
<Rapist.symbolPacks.0.adjective>강간하는</Rapist.symbolPacks.0.adjective>
<Rapist.symbolPacks.0.member>강간범</Rapist.symbolPacks.0.member>
<Rapist.symbolPacks.1.ideoName>슬라네쉬 교단</Rapist.symbolPacks.1.ideoName>
<Rapist.symbolPacks.1.theme>쾌락</Rapist.symbolPacks.1.theme>
<Rapist.symbolPacks.1.adjective>타락한</Rapist.symbolPacks.1.adjective>
<Rapist.symbolPacks.1.member>이교도</Rapist.symbolPacks.1.member>
</LanguageData>

View File

@ -0,0 +1,59 @@
<?xml version="1.0" encoding="utf-8"?>
<LanguageData>
<Bestiality_Abhorrent.label>혐오스러움</Bestiality_Abhorrent.label>
<Bestiality_Abhorrent.description>수간은 절대 용납할수 없는 행위입니다.</Bestiality_Abhorrent.description>
<Bestiality_Horrible.label>끔찍함</Bestiality_Horrible.label>
<Bestiality_Horrible.description>수간은 끔찍한 짓입니다.</Bestiality_Horrible.description>
<Bestiality_Disapproved.label>싫어함</Bestiality_Disapproved.label>
<Bestiality_Disapproved.description>수간충을 좋아하는 사람은 없습니다.</Bestiality_Disapproved.description>
<Bestiality_Horrible.description>수간은 끔찍한 짓입니다.</Bestiality_Horrible.description>
<Bestiality_Acceptable.label>수용가능</Bestiality_Acceptable.label>
<Bestiality_Acceptable.description>수간은 일반적인 일입니다.</Bestiality_Acceptable.description>
<Bestiality_OnlyVenerated.label>숭배동물만</Bestiality_OnlyVenerated.label>
<Bestiality_OnlyVenerated.description>숭배받는 동물과 교미하는것은 존중받을 일입니다. 하지만 다른 동물들과 교미하는것은 규탄받습니다.</Bestiality_OnlyVenerated.description>
<Bestiality_OnlyVenerated.comps.1.description>수간</Bestiality_OnlyVenerated.comps.1.description>
<Bestiality_OnlyVenerated.comps.3.description>수간</Bestiality_OnlyVenerated.comps.3.description>
<Bestiality_Honorable.label>장려됨</Bestiality_Honorable.label>
<Bestiality_Honorable.description>수간은 장려되어야 합니다.</Bestiality_Honorable.description>
<Bestiality_Honorable.comps.1.description>수간</Bestiality_Honorable.comps.1.description>
<Rape_Abhorrent.label>혐오스러움</Rape_Abhorrent.label>
<Rape_Abhorrent.description>강간은 절대 용납할수 없는 행위입니다.</Rape_Abhorrent.description>
<Rape_Abhorrent.comps.1.description>강간</Rape_Abhorrent.comps.1.description>
<Rape_Abhorrent.comps.2.description>수감자를 강간함</Rape_Abhorrent.comps.2.description>
<Rape_Abhorrent.comps.3.description>수감자 강간</Rape_Abhorrent.comps.3.description>
<Rape_Abhorrent.comps.4.description>노예를 강간함</Rape_Abhorrent.comps.4.description>
<Rape_Abhorrent.comps.5.description>노예 강간</Rape_Abhorrent.comps.5.description>
<Rape_Horrible.label>끔찍함</Rape_Horrible.label>
<Rape_Horrible.description>강간은 끔찍한 짓입니다.</Rape_Horrible.description>
<Rape_Horrible.comps.1.description>강간</Rape_Horrible.comps.1.description>
<Rape_Horrible.comps.2.description>수감자를 강간함</Rape_Horrible.comps.2.description>
<Rape_Horrible.comps.3.description>수감자 강간</Rape_Horrible.comps.3.description>
<Rape_Disapproved.label>싫어함</Rape_Disapproved.label>
<Rape_Disapproved.description>강간은 흔한 일이지만 나쁜짓으로 간주됩니다.</Rape_Disapproved.description>
<Rape_Disapproved.comps.1.description>강간</Rape_Disapproved.comps.1.description>
<Rape_Acceptable.label>수용가능</Rape_Acceptable.label>
<Rape_Acceptable.description>강간이 일상입니다.</Rape_Acceptable.description>
<Rape_Honorable.label>자랑스러움</Rape_Honorable.label>
<Rape_Honorable.description>강간은 자랑할만한 일입니다.</Rape_Honorable.description>
<Rape_Honorable.comps.1.description>강간</Rape_Honorable.comps.1.description>
<Sex_Free.label>자유</Sex_Free.label>
<Sex_Free.description>어떠한것도 배척받지 않습니다.</Sex_Free.description>
<Sex_VaginalOnly.label>성기만 사용</Sex_VaginalOnly.label>
<Sex_VaginalOnly.description>성기만 사용한 성행위만이 일반적인 것으로 받아들여집니다. 그 외에는 문란한것으로 간주됩니다.</Sex_VaginalOnly.description>
<Sex_AnalOnly.label>항문성교만</Sex_AnalOnly.label>
<Sex_AnalOnly.description>항문을 사용한 성행위만이 일반적인 것으로 받아들여집니다. 그 외에는 문란한것으로 간주됩니다.</Sex_AnalOnly.description>
<Sex_OralOnly.label>구강성교만</Sex_OralOnly.label>
<Sex_OralOnly.description>구강성교만이 일반적인 것으로 받아들여집니다. 그 외에는 문란한것으로 간주됩니다.</Sex_OralOnly.description>
<Sex_Promiscuous.label>문란함</Sex_Promiscuous.label>
<Sex_Promiscuous.description>문란한 성생활이 선호됩니다.</Sex_Promiscuous.description>
<Incestuos_Free.label>자유</Incestuos_Free.label>
<Incestuos_Free.description>근친상간이 허용됩니다.</Incestuos_Free.description>
<Incestuos_Disapproved_CloseOnly.label>가까운 친척만 싫어함</Incestuos_Disapproved_CloseOnly.label>
<Incestuos_Disapproved_CloseOnly.description>근친상간은 인정받지 못합니다. 사촌보다 먼 관계일경우 근친으로 인식하지 않습니다.</Incestuos_Disapproved_CloseOnly.description>
<Incestuos_Disapproved.label>싫어함</Incestuos_Disapproved.label>
<Incestuos_Disapproved.description>근친상간은 인정받지 못합니다.</Incestuos_Disapproved.description>
<Incestuos_Forbidden.label>금지됨</Incestuos_Forbidden.label>
<Incestuos_Forbidden.description>근친상간은 용납되지 않습니다.</Incestuos_Forbidden.description>
<Incestuos_IncestOnly.label>근친만 가능</Incestuos_IncestOnly.label>
<Incestuos_IncestOnly.description>순수혈통을 보존하기위해 근친상간만을 허용합니다.</Incestuos_IncestOnly.description>
</LanguageData>

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<LanguageData>
<NumofEatenCum.label>정액을 먹은 횟수</NumofEatenCum.label>
<NumofEatenCum.description>내가 정액을 삼킨 횟수.</NumofEatenCum.description>
<Lust.label>음란함</Lust.label>
<Lust.description>내가 음란한 정도.</Lust.description>
</LanguageData>

View File

@ -0,0 +1,46 @@
<?xml version="1.0" encoding="utf-8"?>
<LanguageData>
<Rape_Abhorrent.stages.0.label>누군가를 강간함</Rape_Abhorrent.stages.0.label>
<Rape_Abhorrent.stages.0.description>그랬으면 안됐는데.</Rape_Abhorrent.stages.0.description>
<Rape_Know_Abhorrent.stages.0.label>누군가를 강간함</Rape_Know_Abhorrent.stages.0.label>
<Rape_Horrible.stages.0.label>누군가를 강간함</Rape_Horrible.stages.0.label>
<Rape_Horrible.stages.0.description>그랬으면 안됐는데.</Rape_Horrible.stages.0.description>
<Rape_Know_Horrible.stages.0.label>누군가를 강간함</Rape_Know_Horrible.stages.0.label>
<Rape_Disapproved.stages.0.label>누군가를 강간함</Rape_Disapproved.stages.0.label>
<Rape_Disapproved.stages.0.description>그랬으면 안됐는데.</Rape_Disapproved.stages.0.description>
<Rape_Know_Disapproved.stages.0.label>누군가를 강간함</Rape_Know_Disapproved.stages.0.label>
<Rape_Know_Honorable.stages.0.label>누군가를 강간함</Rape_Know_Honorable.stages.0.label>
<Sex_Promiscuous.stages.0.label>문란한 섹스</Sex_Promiscuous.stages.0.label>
<Sex_Promiscuous.stages.0.description>배덕감에 흥분돼...</Sex_Promiscuous.stages.0.description>
<Sex_NonPromiscuous.stages.0.label>평범한 섹스</Sex_NonPromiscuous.stages.0.label>
<Sex_NonPromiscuous.stages.0.description>이걸론 만족할수 없어.</Sex_NonPromiscuous.stages.0.description>
<Sex_Know_Promiscuous.stages.0.label>문란함</Sex_Know_Promiscuous.stages.0.label>
<Sex_Know_Promiscuous_Approval.stages.0.label>문란함</Sex_Know_Promiscuous_Approval.stages.0.label>
<Sex_Know_NonPromiscuous.stages.0.label>시시함</Sex_Know_NonPromiscuous.stages.0.label>
<Bestiality_Abhorrent.stages.0.label>수간</Bestiality_Abhorrent.stages.0.label>
<Bestiality_Abhorrent.stages.0.description>수간을 하다니... 죽고싶다...</Bestiality_Abhorrent.stages.0.description>
<Bestiality_Know_Abhorrent.stages.0.label>수간</Bestiality_Know_Abhorrent.stages.0.label>
<Bestiality_Horrible.stages.0.label>수간</Bestiality_Horrible.stages.0.label>
<Bestiality_Horrible.stages.0.description>수간을 하다니... 나 스스로를 용서할수 없을것 같아.</Bestiality_Horrible.stages.0.description>
<Bestiality_Know_Horrible.stages.0.label>수간</Bestiality_Know_Horrible.stages.0.label>
<Bestiality_Disapproved.stages.0.label>수간</Bestiality_Disapproved.stages.0.label>
<Bestiality_Disapproved.stages.0.description>수간을 하다니... 다시는 그러지 않을거야.</Bestiality_Disapproved.stages.0.description>
<Bestiality_Know_Disapproved.stages.0.label>수간</Bestiality_Know_Disapproved.stages.0.label>
<Bestiality_Nonvenerated_Disapproved.stages.0.label>숭배받지 않는 동물과 교미</Bestiality_Nonvenerated_Disapproved.stages.0.label>
<Bestiality_Nonvenerated_Disapproved.stages.0.description>수간을 하다니... 다시는 그러지 않을거야.</Bestiality_Nonvenerated_Disapproved.stages.0.description>
<Bestiality_Nonvenerated_Know_Disapproved.stages.0.label>숭배받지 않는 동물과 교미</Bestiality_Nonvenerated_Know_Disapproved.stages.0.label>
<Bestiality_Honorable.stages.0.label>수간</Bestiality_Honorable.stages.0.label>
<Bestiality_Honorable.stages.0.description>동물과 교미했어.</Bestiality_Honorable.stages.0.description>
<Bestiality_Know_Honorable.stages.0.label>수간</Bestiality_Know_Honorable.stages.0.label>
<IncestuosMarriage_Forbidden.stages.0.label>사회적 규탄</IncestuosMarriage_Forbidden.stages.0.label>
<IncestuosMarriage_Forbidden.stages.0.description>아무도 우리를 축복해주지 않아.</IncestuosMarriage_Forbidden.stages.0.description>
<IncestuosMarriage_Disapproved.stages.0.label>가십거리가 됨</IncestuosMarriage_Disapproved.stages.0.label>
<IncestuosMarriage_Disapproved.stages.0.description>남들이 우리의 뒷담을 하고있어.</IncestuosMarriage_Disapproved.stages.0.description>
<Sex_Know_Incest_Disapproved.stages.0.label>근친</Sex_Know_Incest_Disapproved.stages.0.label>
<Sex_Know_Incest_Forbidden.stages.0.label>근친</Sex_Know_Incest_Forbidden.stages.0.label>
<Sex_Know_IncestMarriage_Disapproved.stages.0.label>근친</Sex_Know_IncestMarriage_Disapproved.stages.0.label>
<Sex_Know_IncestMarriage_Forbidden.stages.0.label>근친</Sex_Know_IncestMarriage_Forbidden.stages.0.label>
<Sex_Know_Incest_Violated.stages.0.label>혈족이 아닌사람과 성관계</Sex_Know_Incest_Violated.stages.0.label>
<Sex_Know_IncestMarriage_Violated.stages.0.label>혈통을 더럽힘</Sex_Know_IncestMarriage_Violated.stages.0.label>
</LanguageData>

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<LanguageData>
<LustStatFactor>음란함: x{0}%</LustStatFactor>
<SlaveStatFactor>노예: x{0}%</SlaveStatFactor>
<SlaveStatFactorDefault>노예가 아님: x100%</SlaveStatFactorDefault>
<MemeStatFactor>문화 요소: x{0}%</MemeStatFactor>
</LanguageData>

39
Patches/RJW_StatDefs.xml Normal file
View File

@ -0,0 +1,39 @@
<?xml version="1.0" encoding="UTF-8"?>
<Patch>
<Operation Class="PatchOperationAdd">
<xpath>Defs/StatDef[defName="SexAbility"]</xpath>
<value>
<skillNeedFactors>
<li Class="rjw_CORE_EXPOSED.SkillNeed_BaseBonus">
<skill>Sex</skill>
<baseValue>0.40</baseValue>
<bonusPerLevel>0.15</bonusPerLevel>
</li>
</skillNeedFactors>
</value>
</Operation>
<Operation Class="PatchOperationAdd">
<xpath>Defs/StatDef[defName="SexFrequency"]/parts</xpath>
<value>
<li Class="RJWSexperience.StatPart_Lust">
<factor>1.0</factor>
</li>
</value>
</Operation>
<Operation Class="PatchOperationAdd">
<xpath>Defs/StatDef[defName="Vulnerability"]/parts</xpath>
<value>
<li Class="RJWSexperience.StatPart_GenderPrimacy">
<modifier>0.5</modifier>
</li>
<li Class="RJWSexperience.StatPart_Slave">
<factor>3.0</factor>
</li>
</value>
</Operation>
</Patch>

View File

@ -0,0 +1,82 @@
<?xml version="1.0" encoding="UTF-8"?>
<Patch>
<Operation Class="PatchOperationAdd">
<xpath>Defs/ThoughtDef[defName="GotBredByAnimal"]</xpath>
<value>
<nullifyingPrecepts>
<li>Bestiality_OnlyVenerated</li>
<li>Bestiality_Honorable</li>
</nullifyingPrecepts>
</value>
</Operation>
<Operation Class="PatchOperationAdd">
<xpath>Defs/ThoughtDef[defName="GotAnalBredByAnimal"]</xpath>
<value>
<nullifyingPrecepts>
<li>Bestiality_OnlyVenerated</li>
<li>Bestiality_Honorable</li>
</nullifyingPrecepts>
</value>
</Operation>
<Operation Class="PatchOperationAdd">
<xpath>Defs/ThoughtDef[defName="AllowedAnimalToBreed"]</xpath>
<value>
<nullifyingPrecepts>
<li>Bestiality_OnlyVenerated</li>
<li>Bestiality_Honorable</li>
</nullifyingPrecepts>
</value>
</Operation>
<Operation Class="PatchOperationAdd">
<xpath>Defs/ThoughtDef[defName="GotLickedByAnimal"]</xpath>
<value>
<nullifyingPrecepts>
<li>Bestiality_OnlyVenerated</li>
<li>Bestiality_Honorable</li>
</nullifyingPrecepts>
</value>
</Operation>
<Operation Class="PatchOperationAdd">
<xpath>Defs/ThoughtDef[defName="GotGropedByAnimal"]</xpath>
<value>
<nullifyingPrecepts>
<li>Bestiality_OnlyVenerated</li>
<li>Bestiality_Honorable</li>
</nullifyingPrecepts>
</value>
</Operation>
<Operation Class="PatchOperationAdd">
<xpath>Defs/ThoughtDef[defName="AllowedAnimalToGrope"]</xpath>
<value>
<nullifyingPrecepts>
<li>Bestiality_OnlyVenerated</li>
<li>Bestiality_Honorable</li>
</nullifyingPrecepts>
</value>
</Operation>
<Operation Class="PatchOperationAdd">
<xpath>Defs/ThoughtDef[defName="StoleSomeLovin"]</xpath>
<value>
<nullifyingPrecepts>
<li>Rape_Honorable</li>
</nullifyingPrecepts>
</value>
</Operation>
<Operation Class="PatchOperationAdd">
<xpath>Defs/ThoughtDef[defName="Incestuous"]</xpath>
<value>
<nullifyingPrecepts>
<li>Incestuos_Free</li>
<li>Incestuos_IncestOnly</li>
</nullifyingPrecepts>
</value>
</Operation>
</Patch>

View File

@ -0,0 +1,25 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.31424.327
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RJWSexperience", "RJWSexperience\RJWSexperience.csproj", "{9C728E06-573B-4B04-A07F-ACBF60CB424D}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{9C728E06-573B-4B04-A07F-ACBF60CB424D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9C728E06-573B-4B04-A07F-ACBF60CB424D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9C728E06-573B-4B04-A07F-ACBF60CB424D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9C728E06-573B-4B04-A07F-ACBF60CB424D}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {03C87A93-F76D-49B3-AE25-67E14F20EACD}
EndGlobalSection
EndGlobal

View File

@ -0,0 +1,32 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using RimWorld;
using Verse;
namespace RJWSexperience
{
public class GoodwillSituationWorker_OneWayReceive : GoodwillSituationWorker_MemeCompatibility
{
public override int GetNaturalGoodwillOffset(Faction other)
{
if (!Applies(other)) return 0;
return def.naturalGoodwillOffset;
}
protected bool Applies(Faction other)
{
Ideo primaryideo = Faction.OfPlayer.ideos?.PrimaryIdeo;
Ideo primaryideo2 = other.ideos?.PrimaryIdeo;
if (primaryideo == null || primaryideo2 == null) return false;
return primaryideo.memes.Contains(def.meme) && !primaryideo2.memes.Contains(def.meme);
}
}
}

View File

@ -0,0 +1,22 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Reflection;
using Verse;
using HarmonyLib;
namespace RJWSexperience
{
[StaticConstructorOnStartup]
internal static class First
{
static First()
{
var har = new Harmony("RJW_Sexperience");
har.PatchAll(Assembly.GetExecutingAssembly());
}
}
}

View File

@ -0,0 +1,67 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Verse;
using Verse.AI;
using RimWorld;
using rjw;
namespace RJWSexperience
{
public class JobGiver_Orgy : ThinkNode_JobGiver
{
/// <summary> Checks all of our potential partners to see if anyone's eligible, returning the most attractive and convenient one. </summary>
protected override Job TryGiveJob(Pawn pawn)
{
if (!RJWHookupSettings.HookupsEnabled || !RJWHookupSettings.QuickHookupsEnabled)
return null;
if (pawn.Drafted)
return null;
if (!SexUtility.ReadyForHookup(pawn))
return null;
// We increase the time right away to prevent the fairly expensive check from happening too frequently
SexUtility.IncreaseTicksToNextHookup(pawn);
// If the pawn is a whore, or recently had sex, skip the job unless they're really horny
if (!xxx.is_frustrated(pawn) && (xxx.is_whore(pawn) || !SexUtility.ReadyForLovin(pawn)))
return null;
// This check attempts to keep groups leaving the map, like guests or traders, from turning around to hook up
if (pawn.mindState?.duty?.def == DutyDefOf.TravelOrLeave)
{
// TODO: Some guest pawns keep the TravelOrLeave duty the whole time, I think the ones assigned to guard the pack animals.
// That's probably ok, though it wasn't the intention.
if (RJWSettings.DebugLogJoinInBed) ModLog.Message($" Quickie.TryGiveJob:({xxx.get_pawnname(pawn)}): has TravelOrLeave, no time for lovin!");
return null;
}
if (pawn.CurJob == null)
{
//--Log.Message(" checking pawn and abilities");
if (CasualSex_Helper.CanHaveSex(pawn))
{
//--Log.Message(" finding partner");
Pawn partner = CasualSex_Helper.find_partner(pawn, pawn.Map, false);
//--Log.Message(" checking partner");
if (partner == null)
return null;
// Interrupt current job.
if (pawn.CurJob != null && pawn.jobs.curDriver != null)
pawn.jobs.curDriver.EndJobWith(JobCondition.InterruptForced);
//--Log.Message(" returning job");
return JobMaker.MakeJob(xxx.quick_sex, partner);
}
}
return null;
}
}
}

View File

@ -0,0 +1,21 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Verse;
using RimWorld;
namespace RJWSexperience
{
public static class Keyed
{
public static string LustStatFactor(float value) => "LustStatFactor".Translate(value);
public static string SlaveStatFactor(float value) => "SlaveStatFactor".Translate(value);
public static string MemeStatFactor(float value) => "MemeStatFactor".Translate(value);
public static readonly string SlaveStatFactorDefault = "SlaveStatFactorDefault".Translate();
}
}

View File

@ -0,0 +1,90 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using RimWorld;
using Verse;
namespace RJWSexperience
{
public static class HistoryEventArgsNamesCustom
{
public const string Tag = "TAG";
public const string Partner = "PARTNER";
}
public static class HETag
{
public const string Incestous = "[Incestuos]";
public const string Raped = "[Raped]";
public const string Rape = "[Rape]";
}
public class PreceptComp_SelfTookThoughtTagged : PreceptComp_SelfTookMemoryThought
{
public string tag;
public bool exclusive = false;
public PreceptComp_SelfTookThoughtTagged() { }
public override void Notify_MemberTookAction(HistoryEvent ev, Precept precept, bool canApplySelfTookThoughts)
{
if (tag != null)
{
if (ev.args.TryGetArg(HistoryEventArgsNamesCustom.Tag, out string tags))
{
if (tags.ToLower().Contains(tag.ToLower()) ^ exclusive) base.Notify_MemberTookAction(ev, precept, canApplySelfTookThoughts);
}
else if (exclusive)
{
base.Notify_MemberTookAction(ev, precept, canApplySelfTookThoughts);
}
}
else
{
base.Notify_MemberTookAction(ev, precept, canApplySelfTookThoughts);
}
}
}
public class PreceptComp_KnowsMemoryThoughtTagged : PreceptComp_KnowsMemoryThought
{
public string tag;
public bool exclusive = false;
public bool applyonpartner = false;
public PreceptComp_KnowsMemoryThoughtTagged() { }
public override void Notify_MemberWitnessedAction(HistoryEvent ev, Precept precept, Pawn member)
{
if (!applyonpartner)
{
if (ev.args.TryGetArg(HistoryEventArgsNamesCustom.Partner, out Pawn pawn))
{
if (pawn == member) return;
}
}
if (tag != null)
{
if (ev.args.TryGetArg(HistoryEventArgsNamesCustom.Tag, out string tags))
{
if (tags.ToLower().Contains(tag.ToLower()) ^ exclusive) base.Notify_MemberWitnessedAction(ev, precept, member);
}
else if (exclusive)
{
base.Notify_MemberWitnessedAction(ev, precept, member);
}
}
else
{
base.Notify_MemberWitnessedAction(ev, precept, member);
}
}
}
}

View File

@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// 어셈블리에 대한 일반 정보는 다음 특성 집합을 통해
// 제어됩니다. 어셈블리와 관련된 정보를 수정하려면
// 이러한 특성 값을 변경하세요.
[assembly: AssemblyTitle("RJWSexperience")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("RJWSexperience")]
[assembly: AssemblyCopyright("Copyright © 2021")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// ComVisible을 false로 설정하면 이 어셈블리의 형식이 COM 구성 요소에
// 표시되지 않습니다. COM에서 이 어셈블리의 형식에 액세스하려면
// 해당 형식에 대해 ComVisible 특성을 true로 설정하세요.
[assembly: ComVisible(false)]
// 이 프로젝트가 COM에 노출되는 경우 다음 GUID는 typelib의 ID를 나타냅니다.
[assembly: Guid("9c728e06-573b-4b04-a07f-acbf60cb424d")]
// 어셈블리의 버전 정보는 다음 네 가지 값으로 구성됩니다.
//
// 주 버전
// 부 버전
// 빌드 번호
// 수정 버전
//
// 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 번호를
// 기본값으로 할 수 있습니다.
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

View File

@ -0,0 +1,93 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{9C728E06-573B-4B04-A07F-ACBF60CB424D}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>RJWSexperience</RootNamespace>
<AssemblyName>RJWSexperience</AssemblyName>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<Deterministic>true</Deterministic>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>..\..\Assemblies\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>..\..\Assemblies\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="0Harmony">
<HintPath>D:\잉어\Lib\Harmony.2.0.4.0\net472\0Harmony.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="Assembly-CSharp">
<HintPath>..\..\..\..\RimWorldWin64_Data\Managed\Assembly-CSharp.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="RJW">
<HintPath>..\..\..\RJW\1.3\Assemblies\RJW.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
<Reference Include="UnityEngine">
<HintPath>..\..\..\..\RimWorldWin64_Data\Managed\UnityEngine.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="UnityEngine.CoreModule">
<HintPath>..\..\..\..\RimWorldWin64_Data\Managed\UnityEngine.CoreModule.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="UnityEngine.IMGUIModule">
<HintPath>..\..\..\..\RimWorldWin64_Data\Managed\UnityEngine.IMGUIModule.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="UnityEngine.UI">
<HintPath>..\..\..\..\RimWorldWin64_Data\Managed\UnityEngine.UI.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="UnityEngine.UIElementsModule">
<HintPath>..\..\..\..\RimWorldWin64_Data\Managed\UnityEngine.UIElementsModule.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="UnityEngine.UIModule">
<HintPath>..\..\..\..\RimWorldWin64_Data\Managed\UnityEngine.UIModule.dll</HintPath>
<Private>False</Private>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="GoodwillSituationWorker_MemeCompatibility.cs" />
<Compile Include="Harmony.cs" />
<Compile Include="Keyed.cs" />
<Compile Include="PreceptComp_SelftTookThoughtExtended.cs" />
<Compile Include="Rimworld_Patch.cs" />
<Compile Include="RJW_Patch.cs" />
<Compile Include="StatParts.cs" />
<Compile Include="Thought_Recordbased.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Utility.cs" />
<Compile Include="VariousDefOf.cs" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

View File

@ -0,0 +1,420 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using HarmonyLib;
using rjw;
using RimWorld;
using Verse;
namespace RJWSexperience
{
public static class RJWUtility
{
public static float GetSexStat(this Pawn pawn)
{
if (xxx.is_human(pawn))
{
return pawn.GetStatValue(xxx.sex_stat);
}
else return 1.0f;
}
public static HistoryEvent TaggedEvent(this HistoryEventDef def ,Pawn pawn, string tag, Pawn partner)
{
return new HistoryEvent(def, pawn.Named(HistoryEventArgsNames.Doer), tag.Named(HistoryEventArgsNamesCustom.Tag), partner.Named(HistoryEventArgsNamesCustom.Partner));
}
}
[HarmonyPatch(typeof(JobDriver_Sex), "Orgasm")]
public static class RJW_Patch_Orgasm
{
public static void Postfix(JobDriver_Sex __instance)
{
if (__instance.sexType != xxx.rjwSextype.Masturbation && !(__instance is JobDriver_Masturbate))
{
if (__instance.isRape)
{
__instance.pawn?.skills?.Learn(VariousDefOf.SexSkill, 0.05f, true);
}
else
{
__instance.pawn?.skills?.Learn(VariousDefOf.SexSkill, 0.35f, true);
}
}
}
}
[HarmonyPatch(typeof(WhoringHelper), "WhoreAbilityAdjustmentMin")]
public static class RJW_Patch_WhoreAbilityAdjustmentMin
{
public static void Postfix(Pawn whore, ref float __result)
{
__result *= whore.GetSexStat();
}
}
[HarmonyPatch(typeof(WhoringHelper), "WhoreAbilityAdjustmentMax")]
public static class RJW_Patch_WhoreAbilityAdjustmentMax
{
public static void Postfix(Pawn whore, ref float __result)
{
__result *= whore.GetSexStat();
}
}
[HarmonyPatch(typeof(SexUtility), "SatisfyPersonal")]
public static class RJW_Patch_SatisfyPersonal_Pre
{
public static void Prefix(Pawn pawn, Pawn partner, xxx.rjwSextype sextype, bool violent, bool pawn_is_raping, ref float satisfaction)
{
satisfaction *= partner.GetSexStat();
}
}
[HarmonyPatch(typeof(SexUtility), "SatisfyPersonal")]
public static class RJW_Patch_SatisfyPersonal_Post
{
private const float base_sat_per_fuck = 0.3f;
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.
}
}
}
[HarmonyPatch(typeof(ThinkNode_ChancePerHour_Bestiality), "MtbHours")]
public static class RJW_Patch_ChancePerHour_Bestiality
{
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
}
public static float BestialityByPrecept(Ideo ideo)
{
if (ideo.HasPrecept(VariousDefOf.Bestiality_Honorable)) return 0.3f;
else if (ideo.HasPrecept(VariousDefOf.Bestiality_OnlyVenerated)) return 0.6f;
else if (ideo.HasPrecept(VariousDefOf.Bestiality_Acceptable)) return 0.75f;
else if (ideo.HasPrecept(VariousDefOf.Bestiality_Disapproved)) return 1.0f;
else return 5f;
}
}
[HarmonyPatch(typeof(ThinkNode_ChancePerHour_RapeCP), "MtbHours")]
public static class RJW_Patch_ChancePerHour_RapeCP
{
public static void Postfix(Pawn pawn, ref float __result)
{
Ideo ideo = pawn.Ideo;
if (ideo != null) __result *= RapeByPrecept(ideo); // ideo is null if don't have dlc
}
public static float RapeByPrecept(Ideo ideo)
{
if (ideo.HasPrecept(VariousDefOf.Rape_Honorable)) return 0.25f;
else if (ideo.HasPrecept(VariousDefOf.Rape_Acceptable)) return 0.5f;
else if (ideo.HasPrecept(VariousDefOf.Rape_Disapproved)) return 1.0f;
else return 3f;
}
}
[HarmonyPatch(typeof(xxx), "TransferNutrition")]
public static class RJW_Patch_TransferNutrition
{
public static void Postfix(Pawn pawn, Pawn partner, xxx.rjwSextype sextype)
{
Pawn receiver = null;
if (Genital_Helper.has_penis_fertile(pawn)) receiver = partner;
else if (Genital_Helper.has_penis_fertile(partner)) receiver = pawn;
if (receiver != null && (
sextype == xxx.rjwSextype.Oral ||
sextype == xxx.rjwSextype.Fellatio ||
sextype == xxx.rjwSextype.Sixtynine))
{
receiver.needs?.mood?.thoughts?.memories?.TryGainMemoryFast(VariousDefOf.AteCum);
}
}
}
[HarmonyPatch(typeof(xxx), "is_rapist")]
public static class RJW_Patch_is_rapist
{
public static void Postfix(Pawn pawn, ref bool __result)
{
Ideo ideo = pawn.Ideo;
if (ideo != null)
{
__result = __result || ideo.HasMeme(VariousDefOf.Rapist);
}
}
}
[HarmonyPatch(typeof(xxx), "is_zoophile")]
public static class RJW_Patch_is_zoophile
{
public static void Postfix(Pawn pawn, ref bool __result)
{
Ideo ideo = pawn.Ideo;
if (ideo != null)
{
__result = __result || ideo.HasMeme(VariousDefOf.Zoophile);
}
}
}
[HarmonyPatch(typeof(SexUtility), "Aftersex", new Type[] {typeof(Pawn), typeof(Pawn), typeof(bool), typeof(bool), typeof(bool), typeof(xxx.rjwSextype) })]
public static class RJW_Patch_Aftersex
{
public static void Postfix(Pawn pawn, Pawn partner, bool usedCondom, bool rape, bool isCoreLovin, xxx.rjwSextype sextype)
{
//Log.Message("Aftersex " + pawn.Label + ": " + sextype);
if (xxx.is_human(pawn)) AfterSexHuman(pawn, partner, usedCondom, rape, isCoreLovin, sextype);
else if (xxx.is_human(partner)) AfterSexHuman(partner, pawn, usedCondom, false, isCoreLovin, sextype, true);
}
public static void AfterSexHuman(Pawn human, Pawn partner, bool usedCondom, bool rape, bool isCoreLovin, xxx.rjwSextype sextype, bool isHumanReceiving = false)
{
string tag = "";
if (human.IsIncest(partner))
{
tag += HETag.Incestous;
}
if (partner.IsAnimal())
{
if (isHumanReceiving && rape)
{
if (human.IsSlave) RapeEffectSlave(human);
}
else
{
if (human.Ideo?.IsVeneratedAnimal(partner) ?? false) Find.HistoryEventsManager.RecordEvent(VariousDefOf.SexWithVeneratedAnimal.TaggedEvent(human, tag, partner));
else Find.HistoryEventsManager.RecordEvent(VariousDefOf.SexWithAnimal.TaggedEvent(human, tag, partner));
}
}
else if (xxx.is_human(partner))
{
if (rape)
{
if (partner.IsSlave)
{
Find.HistoryEventsManager.RecordEvent(VariousDefOf.RapedSlave.TaggedEvent(human ,tag + HETag.Rape ,partner));
Find.HistoryEventsManager.RecordEvent(VariousDefOf.WasRapedSlave.TaggedEvent(partner, tag + HETag.Raped, human));
RapeEffectSlave(partner);
}
else if (partner.IsPrisoner)
{
Find.HistoryEventsManager.RecordEvent(VariousDefOf.RapedPrisoner.TaggedEvent(human, tag + HETag.Rape, partner));
Find.HistoryEventsManager.RecordEvent(VariousDefOf.WasRapedPrisoner.TaggedEvent(partner, tag + HETag.Raped, human));
partner.guest.will = Math.Max(0, partner.guest.will - 0.2f);
}
else
{
Find.HistoryEventsManager.RecordEvent(VariousDefOf.Raped.TaggedEvent(human, tag + HETag.Rape, partner));
Find.HistoryEventsManager.RecordEvent(VariousDefOf.WasRaped.TaggedEvent(partner, tag + HETag.Raped, human));
}
}
else
{
HistoryEventDef sexevent = GetSexHistoryDef(sextype);
if (sexevent != null)
{
Find.HistoryEventsManager.RecordEvent(sexevent.TaggedEvent(human, tag, partner));
Find.HistoryEventsManager.RecordEvent(sexevent.TaggedEvent(partner, tag, human));
if (sexevent == VariousDefOf.PromiscuousSex)
{
human.records.AddTo(VariousDefOf.Lust, 3.0f);
partner.records.AddTo(VariousDefOf.Lust, 3.0f);
}
}
}
}
}
public static void RapeEffectSlave(Pawn victim)
{
Need_Suppression suppression = victim.needs.TryGetNeed<Need_Suppression>();
if (suppression != null)
{
Hediff broken = victim.health.hediffSet.GetFirstHediffOfDef(xxx.feelingBroken);
if (broken != null) suppression.CurLevel += 0.3f * broken.Severity + 0.05f;
else suppression.CurLevel += 0.05f;
}
}
/// <summary>
/// only for non-violate human sex
/// </summary>
/// <param name="pawn"></param>
/// <param name="partner"></param>
/// <param name="sextype"></param>
/// <returns></returns>
public static HistoryEventDef GetSexHistoryDef(xxx.rjwSextype sextype)
{
switch (sextype)
{
case xxx.rjwSextype.None:
case xxx.rjwSextype.MechImplant:
default:
return null;
case xxx.rjwSextype.Vaginal:
return VariousDefOf.VaginalSex;
case xxx.rjwSextype.Anal:
case xxx.rjwSextype.Rimming:
return VariousDefOf.AnalSex;
case xxx.rjwSextype.Oral:
case xxx.rjwSextype.Fellatio:
case xxx.rjwSextype.Cunnilingus:
return VariousDefOf.OralSex;
case xxx.rjwSextype.Masturbation:
case xxx.rjwSextype.Boobjob:
case xxx.rjwSextype.Handjob:
case xxx.rjwSextype.Footjob:
case xxx.rjwSextype.Fingering:
case xxx.rjwSextype.MutualMasturbation:
return VariousDefOf.MiscSex;
case xxx.rjwSextype.DoublePenetration :
case xxx.rjwSextype.Scissoring :
case xxx.rjwSextype.Fisting :
case xxx.rjwSextype.Sixtynine :
return VariousDefOf.PromiscuousSex;
}
}
}
/// <summary>
/// Set prefer sextype using precepts
/// </summary>
[HarmonyPatch(typeof(SexUtility), "DetermineSexScores")]
public static class RJW_Patch_DetermineSexScores
{
public static void Postfix(Pawn pawn, Pawn partner, bool rape, bool whoring, Pawn receiving, List<float> __result)
{
Ideo ideo = pawn.Ideo;
if (ideo != null) PreceptSextype(ideo, pawn.GetStatValue(xxx.sex_drive_stat), __result, 0);
ideo = partner.Ideo;
if (!rape && ideo != null) PreceptSextype(ideo, pawn.GetStatValue(xxx.sex_drive_stat), __result, 1);
}
public static void PreceptSextype(Ideo ideo, float sexdrive, List<float> result, int offset)
{
float mult = 8.0f * Math.Max(0.3f, 1 / Math.Max(0.01f, sexdrive));
if (ideo.HasPrecept(VariousDefOf.Sex_VaginalOnly))
{
result[0 + offset] *= mult;
}
else if (ideo.HasPrecept(VariousDefOf.Sex_AnalOnly))
{
result[2 + offset] *= mult;
result[6 + offset] *= mult;
}
else if (ideo.HasPrecept(VariousDefOf.Sex_OralOnly))
{
result[4 + offset] *= mult;
result[8 + offset] *= mult;
}
else if (ideo.HasPrecept(VariousDefOf.Sex_Promiscuous))
{
result[10 + offset] *= mult;
result[20 + offset] *= mult;
result[24 + offset] *= mult;
result[26 + offset] *= mult;
}
}
}
[HarmonyPatch(typeof(Nymph_Generator), "set_skills")]
public static class RJW_Patch_Nymph_set_skills
{
public static void Postfix(Pawn pawn)
{
SkillRecord sexskill = pawn.skills.GetSkill(VariousDefOf.SexSkill);
if (sexskill != null)
{
sexskill.passion = Passion.Major;
sexskill.Level = (int)Utility.RandGaussianLike(7f, 20.99f);
sexskill.xpSinceLastLevel = sexskill.XpRequiredForLevelUp * Rand.Range(0.10f, 0.90f);
}
}
}
[HarmonyPatch(typeof(SexAppraiser), "would_fuck", new Type[] {typeof(Pawn), typeof(Pawn), typeof(bool), typeof(bool), typeof(bool) })]
public static class RJW_Patch_would_fuck
{
public static void Postfix(Pawn fucker, Pawn fucked, bool invert_opinion, bool ignore_bleeding, bool ignore_gender, ref float __result)
{
Ideo ideo = fucker.Ideo;
if (ideo != null)
{
if (fucker.IsIncest(fucked))
{
if (ideo.HasPrecept(VariousDefOf.Incestuos_IncestOnly)) __result *= 2.0f;
else if (!fucker.relations?.DirectRelationExists(PawnRelationDefOf.Spouse, fucked) ?? false)
{
if (ideo.HasPrecept(VariousDefOf.Incestuos_Disapproved)) __result *= 0.5f;
else if (ideo.HasPrecept(VariousDefOf.Incestuos_Forbidden)) __result *= 0.1f;
}
}
if (fucked.IsAnimal())
{
if (ideo.HasPrecept(VariousDefOf.Bestiality_Honorable)) __result *= 2.0f;
else if (ideo.HasPrecept(VariousDefOf.Bestiality_OnlyVenerated) && ideo.IsVeneratedAnimal(fucked)) __result *= 2.0f;
else if (ideo.HasPrecept(VariousDefOf.Bestiality_Acceptable)) __result *= 1.0f;
else __result *= 0.5f;
}
}
}
}
[HarmonyPatch(typeof(PawnDesignations_Breedee), "UpdateCanDesignateBreeding")]
public static class RJW_Patch_UpdateCanDesignateBreeding
{
public static void Postfix(Pawn pawn, ref bool __result)
{
Ideo ideo = pawn.Ideo;
if (ideo != null && ideo.HasMeme(VariousDefOf.Zoophile))
{
SaveStorage.DataStore.GetPawnData(pawn).CanDesignateBreeding = true;
__result = true;
}
}
}
}

View File

@ -0,0 +1,105 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using HarmonyLib;
using RimWorld;
using Verse;
using rjw;
namespace RJWSexperience
{
[HarmonyPatch(typeof(MarriageCeremonyUtility), "Married")]
public static class Rimworld_Patch_Marriage
{
public static void Postfix(Pawn firstPawn, Pawn secondPawn)
{
if (firstPawn.IsIncest(secondPawn))
{
Find.HistoryEventsManager.RecordEvent(new HistoryEvent(VariousDefOf.Incestuos_Marriage, firstPawn.Named(HistoryEventArgsNames.Doer)));
Find.HistoryEventsManager.RecordEvent(new HistoryEvent(VariousDefOf.Incestuos_Marriage, secondPawn.Named(HistoryEventArgsNames.Doer)));
}
}
}
[HarmonyPatch(typeof(Pawn_RelationsTracker), "SecondaryRomanceChanceFactor")]
public static class Rimworld_Patch_SecondaryRomanceChanceFactor
{
public static void Postfix(Pawn otherPawn, Pawn ___pawn, ref float __result)
{
Ideo ideo = ___pawn.Ideo;
if (ideo != null)
{
if (ideo.HasPrecept(VariousDefOf.Incestuos_IncestOnly) && ___pawn.IsIncest(otherPawn))
{
__result *= 8f;
}
}
}
}
[HarmonyPatch(typeof(PawnGenerator), "GeneratePawn", new Type[] { typeof(PawnGenerationRequest) })]
public static class Rimworld_Patch_GeneratePawn
{
public static void Postfix(PawnGenerationRequest request, ref Pawn __result)
{
if (__result != null && !request.Newborn && xxx.is_human(__result))
{
float avgsex = -500;
float lust = __result.RecordRandomizer(VariousDefOf.Lust, 0, 500, float.MinValue);
float sexableage = 0;
if (__result.ageTracker.AgeBiologicalYears > RJWSettings.sex_minimum_age)
{
sexableage = __result.ageTracker.AgeBiologicalYearsFloat - RJWSettings.sex_minimum_age;
avgsex = sexableage * Rand.Range(0,30) + lust;
}
float totalsex = 0;
float totalbirth = 0;
if (__result.story != null)
{
if (xxx.is_rapist(__result))
{
if (xxx.is_zoophile(__result))
{
if (__result.Has(Quirk.ChitinLover)) totalsex += __result.RecordRandomizer(xxx.CountOfRapedInsects, avgsex, 90);
else totalsex += __result.RecordRandomizer(xxx.CountOfRapedAnimals, avgsex, 90);
}
else totalsex += __result.RecordRandomizer(xxx.CountOfRapedHumanlikes, avgsex, 90);
avgsex /= 2;
}
if (xxx.is_zoophile(__result))
{
if (__result.Has(Quirk.ChitinLover)) totalsex += __result.RecordRandomizer(xxx.CountOfRapedInsects, avgsex, 90);
else totalsex += __result.RecordRandomizer(xxx.CountOfSexWithAnimals, avgsex, 90);
avgsex /= 2;
}
else if (xxx.is_necrophiliac(__result))
{
totalsex += __result.RecordRandomizer(xxx.CountOfSexWithCorpse, avgsex, 90);
avgsex /= 2;
}
if (__result.IsSlave)
{
totalsex += __result.RecordRandomizer(xxx.CountOfBeenRapedByHumanlikes, 0, Rand.Range(0,100)*sexableage);
totalsex += __result.RecordRandomizer(xxx.CountOfBeenRapedByAnimals, Rand.Range(-50,10), Rand.Range(0,10)*sexableage);
}
totalsex += __result.RecordRandomizer(xxx.CountOfSexWithHumanlikes, avgsex, 90);
if (__result.relations != null)
if (__result.relations != null && __result.gender == Gender.Female)
{
totalbirth += __result.relations.GetDirectRelationsCount(PawnRelationDefOf.Child);
__result.records?.SetTo(xxx.CountOfBirthHuman, totalbirth);
}
}
__result.records?.SetTo(xxx.CountOfSex, totalsex);
}
}
}
}

View File

@ -0,0 +1,120 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using rjw;
using RimWorld;
using Verse;
namespace RJWSexperience
{
public class StatPart_Lust : StatPart
{
public float factor;
public override string ExplanationPart(StatRequest req)
{
Pawn pawn = req.Thing as Pawn;
return Keyed.LustStatFactor(LustFactor(pawn) * factor * 100);
}
public override void TransformValue(StatRequest req, ref float val)
{
Pawn pawn = req.Thing as Pawn;
if (pawn != null) val *= LustFactor(pawn) * factor;
}
protected float LustFactor(Pawn pawn)
{
return 1 + pawn.records.GetValue(VariousDefOf.Lust) / 100;
}
}
public class StatPart_GenderPrimacy : StatPart
{
public float modifier;
public override string ExplanationPart(StatRequest req)
{
Pawn pawn = req.Thing as Pawn;
Ideo ideo = null;
if (pawn != null) ideo = pawn.Ideo;
float fact = 1f;
if (ideo != null && !ideo.memes.NullOrEmpty()) for (int i = 0; i < ideo.memes.Count; i++)
{
if (ideo.memes[i] == MemeDefOf.MaleSupremacy)
{
if (pawn.gender == Gender.Male) fact = modifier;
else if (pawn.gender == Gender.Female) fact = 1/modifier;
break;
}
else if (ideo.memes[i] == MemeDefOf.FemaleSupremacy)
{
if (pawn.gender == Gender.Male) fact = 1/modifier;
else if (pawn.gender == Gender.Female) fact = modifier;
break;
}
}
return Keyed.MemeStatFactor(fact * 100);
}
public override void TransformValue(StatRequest req, ref float val)
{
Pawn pawn = req.Thing as Pawn;
Ideo ideo = null;
if (pawn != null) ideo = pawn.Ideo;
if (ideo != null && !ideo.memes.NullOrEmpty()) for(int i=0; i< ideo.memes.Count; i++)
{
if (ideo.memes[i] == MemeDefOf.MaleSupremacy)
{
if (pawn.gender == Gender.Male) val *= modifier;
else if (pawn.gender == Gender.Female) val /= modifier;
break;
}
else if(ideo.memes[i] == MemeDefOf.FemaleSupremacy)
{
if (pawn.gender == Gender.Male) val /= modifier;
else if (pawn.gender == Gender.Female) val *= modifier;
break;
}
}
}
}
public class StatPart_Slave : StatPart
{
public float factor;
public override string ExplanationPart(StatRequest req)
{
float fact = factor * 100;
Pawn pawn = req.Thing as Pawn;
if (pawn != null)
{
if (pawn.IsSlave)
{
return Keyed.SlaveStatFactor(fact);
}
}
return Keyed.SlaveStatFactorDefault;
}
public override void TransformValue(StatRequest req, ref float val)
{
Pawn pawn = req.Thing as Pawn;
if (pawn != null)
{
if (pawn.IsSlave)
{
val *= factor;
}
}
}
}
}

View File

@ -0,0 +1,152 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Verse;
using RimWorld;
namespace RJWSexperience
{
/// <summary>
/// ThoughtDef using record
/// </summary>
public class ThoughtDef_Recordbased : ThoughtDef
{
public RecordDef recordDef;
public List<float> minimumValueforStage = new List<float>();
public float increment;
}
/// <summary>
/// Thought class using record.
/// </summary>
public class Thought_Recordbased : Thought_Memory
{
protected ThoughtDef_Recordbased Def => (ThoughtDef_Recordbased)def;
protected RecordDef recordDef => Def.recordDef;
protected List<float> minimumValueforStage => Def.minimumValueforStage;
protected float increment => Def.increment;
public override int CurStageIndex
{
get
{
float value = pawn.records.GetValue(recordDef);
for (int i = minimumValueforStage.Count - 1; i > 0; i--)
{
if (minimumValueforStage[i] < value) return i + 1;
}
return 0;
}
}
}
public class Thought_AteCum : Thought_Recordbased
{
protected int recordIncrement = 1;
public override void ExposeData()
{
base.ExposeData();
Scribe_Values.Look(ref recordIncrement, "recordIncrement", recordIncrement, true);
}
//There is no direct way to modify custom records via ingestion. So i increase it from thought.
public override void ThoughtInterval()
{
base.ThoughtInterval();
if (recordIncrement >= 1)
{
recordIncrement--;
pawn.records.AddTo(VariousDefOf.NumofEatenCum, 1);
}
}
public override bool TryMergeWithExistingMemory(out bool showBubble)
{
ThoughtHandler thoughts = pawn.needs.mood.thoughts;
if (thoughts.memories.NumMemoriesInGroup(this) >= def.stackLimit)
{
Thought_AteCum thought_Memory = (Thought_AteCum)thoughts.memories.OldestMemoryInGroup(this);
if (thought_Memory != null)
{
showBubble = (thought_Memory.age > thought_Memory.def.DurationTicks / 2);
thought_Memory.Merged();
return true;
}
}
showBubble = true;
return false;
}
public override void Init()
{
base.Init();
recordIncrement = 1;
}
protected virtual void Merged()
{
age = 0;
recordIncrement += 1;
}
}
public class Thought_IncreaseRecord : Thought_Recordbased
{
protected float recordIncrement;
public override void ExposeData()
{
base.ExposeData();
Scribe_Values.Look(ref recordIncrement, "recordIncrement", recordIncrement, true);
}
public override void ThoughtInterval()
{
base.ThoughtInterval();
if (recordIncrement != 0)
{
pawn.records.AddTo(recordDef, recordIncrement);
recordIncrement = 0;
}
}
public override bool TryMergeWithExistingMemory(out bool showBubble)
{
ThoughtHandler thoughts = pawn.needs.mood.thoughts;
if (thoughts.memories.NumMemoriesInGroup(this) >= def.stackLimit)
{
Thought_IncreaseRecord thought_Memory = (Thought_IncreaseRecord)thoughts.memories.OldestMemoryInGroup(this);
if (thought_Memory != null)
{
showBubble = (thought_Memory.age > thought_Memory.def.DurationTicks / 2);
thought_Memory.Merged();
return true;
}
}
showBubble = true;
return false;
}
public override void Init()
{
base.Init();
recordIncrement = increment;
}
protected virtual void Merged()
{
age = 0;
recordIncrement += increment;
}
}
}

View File

@ -0,0 +1,64 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using RimWorld;
using Verse;
using rjw;
using UnityEngine;
namespace RJWSexperience
{
public static class Utility
{
public static System.Random random = new System.Random(Environment.TickCount);
public static float RandGaussianLike(float min, float max, int iterations = 3)
{
double res = 0;
for (int i = 0; i < iterations; i++)
{
res += random.NextDouble();
}
res = res / iterations;
return (float)res * (max - min) + min;
}
public static void SetTo(this Pawn_RecordsTracker records, RecordDef record ,float value)
{
float recordval = records.GetValue(record);
records.AddTo(record, value - recordval);
}
public static bool IsIncest(this Pawn pawn, Pawn partner)
{
IEnumerable<PawnRelationDef> relations = pawn.GetRelations(partner);
Ideo ideo = pawn.Ideo;
bool wide = false;
if (ideo != null) wide = ideo.HasPrecept(VariousDefOf.Incestuos_Disapproved_CloseOnly);
if (!relations.EnumerableNullOrEmpty()) foreach(PawnRelationDef relation in relations)
{
if(wide)
{
if (relation.incestOpinionOffset < 0) return true;
}
else if (relation.familyByBloodRelation) return true;
}
return false;
}
public static float RecordRandomizer(this Pawn pawn, RecordDef record, float avg, float dist, float min = 0, float max = float.MaxValue)
{
float value = Mathf.Clamp(RandGaussianLike(avg - dist,avg + dist),min,max);
float recordvalue = pawn.records.GetValue(record);
pawn.records.AddTo(record, value - recordvalue);
return value;
}
}
}

View File

@ -0,0 +1,56 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Verse;
using RimWorld;
namespace RJWSexperience
{
public class VariousDefOf
{
public static readonly RecordDef NumofEatenCum = DefDatabase<RecordDef>.GetNamed("NumofEatenCum");
public static readonly RecordDef Lust = DefDatabase<RecordDef>.GetNamed("Lust");
public static readonly SkillDef SexSkill = DefDatabase<SkillDef>.GetNamed("Sex");
public static readonly ThoughtDef_Recordbased AteCum = DefDatabase<ThoughtDef_Recordbased>.GetNamed("AteCum");
[MayRequireIdeology] public static readonly MemeDef Zoophile = DefDatabase<MemeDef>.GetNamed("Zoophile");
[MayRequireIdeology] public static readonly MemeDef Rapist = DefDatabase<MemeDef>.GetNamed("Rapist");
[MayRequireIdeology] public static readonly HistoryEventDef SexWithAnimal = DefDatabase<HistoryEventDef>.GetNamed("SexWithAnimal");
[MayRequireIdeology] public static readonly HistoryEventDef SexWithVeneratedAnimal = DefDatabase<HistoryEventDef>.GetNamed("SexWithVeneratedAnimal");
[MayRequireIdeology] public static readonly HistoryEventDef Raped = DefDatabase<HistoryEventDef>.GetNamed("Raped");
[MayRequireIdeology] public static readonly HistoryEventDef RapedSlave = DefDatabase<HistoryEventDef>.GetNamed("RapedSlave");
[MayRequireIdeology] public static readonly HistoryEventDef RapedPrisoner = DefDatabase<HistoryEventDef>.GetNamed("RapedPrisoner");
[MayRequireIdeology] public static readonly HistoryEventDef WasRaped = DefDatabase<HistoryEventDef>.GetNamed("WasRaped");
[MayRequireIdeology] public static readonly HistoryEventDef WasRapedSlave = DefDatabase<HistoryEventDef>.GetNamed("WasRapedSlave");
[MayRequireIdeology] public static readonly HistoryEventDef WasRapedPrisoner = DefDatabase<HistoryEventDef>.GetNamed("WasRapedPrisoner");
[MayRequireIdeology] public static readonly HistoryEventDef VaginalSex = DefDatabase<HistoryEventDef>.GetNamed("VaginalSex");
[MayRequireIdeology] public static readonly HistoryEventDef AnalSex = DefDatabase<HistoryEventDef>.GetNamed("AnalSex");
[MayRequireIdeology] public static readonly HistoryEventDef OralSex = DefDatabase<HistoryEventDef>.GetNamed("OralSex");
[MayRequireIdeology] public static readonly HistoryEventDef MiscSex = DefDatabase<HistoryEventDef>.GetNamed("MiscSex");
[MayRequireIdeology] public static readonly HistoryEventDef PromiscuousSex = DefDatabase<HistoryEventDef>.GetNamed("PromiscuousSex");
[MayRequireIdeology] public static readonly HistoryEventDef Incestuos_Marriage = DefDatabase<HistoryEventDef>.GetNamed("Incestuos_Marriage");
[MayRequireIdeology] public static readonly PreceptDef Bestiality_Abhorrent = DefDatabase<PreceptDef>.GetNamed("Bestiality_Abhorrent");
[MayRequireIdeology] public static readonly PreceptDef Bestiality_Horrible = DefDatabase<PreceptDef>.GetNamed("Bestiality_Horrible");
[MayRequireIdeology] public static readonly PreceptDef Bestiality_Disapproved = DefDatabase<PreceptDef>.GetNamed("Bestiality_Disapproved");
[MayRequireIdeology] public static readonly PreceptDef Bestiality_Acceptable = DefDatabase<PreceptDef>.GetNamed("Bestiality_Acceptable");
[MayRequireIdeology] public static readonly PreceptDef Bestiality_OnlyVenerated = DefDatabase<PreceptDef>.GetNamed("Bestiality_OnlyVenerated");
[MayRequireIdeology] public static readonly PreceptDef Bestiality_Honorable = DefDatabase<PreceptDef>.GetNamed("Bestiality_Honorable");
[MayRequireIdeology] public static readonly PreceptDef Rape_Abhorrent = DefDatabase<PreceptDef>.GetNamed("Rape_Abhorrent");
[MayRequireIdeology] public static readonly PreceptDef Rape_Horrible = DefDatabase<PreceptDef>.GetNamed("Rape_Horrible");
[MayRequireIdeology] public static readonly PreceptDef Rape_Disapproved = DefDatabase<PreceptDef>.GetNamed("Rape_Disapproved");
[MayRequireIdeology] public static readonly PreceptDef Rape_Acceptable = DefDatabase<PreceptDef>.GetNamed("Rape_Acceptable");
[MayRequireIdeology] public static readonly PreceptDef Rape_Honorable = DefDatabase<PreceptDef>.GetNamed("Rape_Honorable");
[MayRequireIdeology] public static readonly PreceptDef Sex_Free = DefDatabase<PreceptDef>.GetNamed("Sex_Free");
[MayRequireIdeology] public static readonly PreceptDef Sex_VaginalOnly = DefDatabase<PreceptDef>.GetNamed("Sex_VaginalOnly");
[MayRequireIdeology] public static readonly PreceptDef Sex_AnalOnly = DefDatabase<PreceptDef>.GetNamed("Sex_AnalOnly");
[MayRequireIdeology] public static readonly PreceptDef Sex_OralOnly = DefDatabase<PreceptDef>.GetNamed("Sex_OralOnly");
[MayRequireIdeology] public static readonly PreceptDef Sex_Promiscuous = DefDatabase<PreceptDef>.GetNamed("Sex_Promiscuous");
[MayRequireIdeology] public static readonly PreceptDef Incestuos_Free = DefDatabase<PreceptDef>.GetNamed("Incestuos_Free");
[MayRequireIdeology] public static readonly PreceptDef Incestuos_Disapproved = DefDatabase<PreceptDef>.GetNamed("Incestuos_Disapproved");
[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");
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 402 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

BIN
Textures/UI/Issues/Rape.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.7 KiB

BIN
Textures/UI/Memes/Rape.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

21
changelogs.txt Normal file
View File

@ -0,0 +1,21 @@
Version Beta 1.0.1.5
- changed icon for precepts and memes
- added stat factors to precepts
- added record randomizing on pawn generation
- pawns will have different sex drive
Version Beta 1.0.1.4
- gender supremacy affects to pawn's vulnerability
- nymps will get passion for sex skill always
- raping prisoner reduces will
- added incestous precepts
- more detailed implementations
Version Beta 1.0.1.3
- added sextype precepts
Version Beta 1.0.1.2
- added precept interactions
Version Beta 1.0.1.1
- added ideologies