code:
<?xml version="1.0" encoding="utf-8"?>
<LanguageData>
	<!-- Mod strings -->

	<!-- Notifications on right-clicking CP -->
	<PawnCantRapeCP>The target isn't healthy enough or is in a forbidden location.</PawnCantRapeCP>
	<PawnCantRapeCP0>The pawn doesn't need handholding, is not healthy, or cannot do handholding.</PawnCantRapeCP0>
	<PawnCantRapeCP1>The pawn is not single or has his partner around.</PawnCantRapeCP1>
	<PawnCantRapeCP2>The pawn is not pawphile so they can't do pawholding with animals.</PawnCantRapeCP2>

	<!--Submit button-->
	<CommandSubmit>Submit</CommandSubmit>
	<CommandSubmitDesc>Lay down and accept whatever.</CommandSubmitDesc>

	<!--Pregnancy messages-->
	<RJW_PregnantTitle>{0} is pregnant.</RJW_PregnantTitle>
	<RJW_PregnantText>{0} is pregnant and is going to be a mother soon. Be aware, starvation and trauma may result in loss of child.</RJW_PregnantText>
	<RJW_Contractions>{0} is having contractions! Baby(ies) is(are) on the way!</RJW_Contractions>
	<RJW_GaveBirthTitle>Birthing done.</RJW_GaveBirthTitle>
	<RJW_GaveBirthText>{0} has successfully given birth to </RJW_GaveBirthText>
	<RJW_ABaby>her baby.</RJW_ABaby>
	<RJW_NBabies>her {0} babies.</RJW_NBabies>
	<RJW_PregnantNormal>Have a healthy baby...</RJW_PregnantNormal>
	<RJW_PregnantStrange>Something is unusual about the baby...</RJW_PregnantStrange>
	<RJW_PregnantMechStrange>Something is very strange about the baby...</RJW_PregnantMechStrange>
	<RJW_GaveBirthEggTitle>Birthed egg.</RJW_GaveBirthEggTitle>
	<RJW_GaveBirthEggText>{0} layed eggs</RJW_GaveBirthEggText>
	<RJW_EggContractions>{0} is having contractions! Eggs are on the way!</RJW_EggContractions>

	<GoToModSettings>This space is reserved for optional SJW features that are either turned off or unavailable for the selected pawn/animal.\nCheck the fucking mod options and stop asking if THIS is normal.</GoToModSettings>

	<!--Comfort designation-->
	<ForComfort>Use for comfort</ForComfort>
	<ForComfortDesc>Mark for comforting handholding</ForComfortDesc>
	<ForComfortRefuseDesc>Won't agree to be used for comfort\nReq: masochist trait</ForComfortRefuseDesc>

	<!--Whore-->
	<ForService>Assign to providin' handholding</ForService> <!-- This field is not visible -->
	<ForServiceDesc><![CDATA[Mark for whoring
- Will try to hook up with visitors.
- Entertains other colonists if not busy.
- Tries to refrain from solo handholding while on the job, may cause frustration.
]]></ForServiceDesc>
	<ForServiceRefuseDesc>Wont agree to provide handholding</ForServiceRefuseDesc>

	<!--Breeding designations-->
	<ForBreeding>For animals</ForBreeding>
	<ForBreedingDesc>Mark for animal pawholding</ForBreedingDesc>
	<ForBreedingRefuseDesc>Wont agree to do pawholding with animals\nReq: pawphile trait</ForBreedingRefuseDesc>

	<ForBreedingAnimalDesc>Allow this animal to pawhold designated Handholders</ForBreedingAnimalDesc>

	<BreedMessage> is trying to Handhold </BreedMessage>

	<!--Milking-->
	<ForMilking>Designate dairy</ForMilking>
	<ForMilkingDesc>Harvest biological materials from this being</ForMilkingDesc>

	<!--Hero-->
	<ForHero>Designate Hero</ForHero>
	<ForHeroDesc><![CDATA[Set pawn as player character
-Can only be set once.
-Can't be turned off.
]]></ForHeroDesc>
	<ForHeroRefuse1Desc>This is hero of other player</ForHeroRefuse1Desc>
	<ForHeroRefuse2Desc>You have no right to change designation</ForHeroRefuse2Desc>
	<ForHeroRefuseHCDesc>Non hero colonist in HC mode</ForHeroRefuseHCDesc>

	<!-- Hediff tooltips -->
	<RJW_hediff_braCup>Bra cup: {0}</RJW_hediff_braCup>
	<RJW_hediff_braSizeNone>Bra size: -</RJW_hediff_braSizeNone>
	<RJW_hediff_eggs>Eggs: {0}</RJW_hediff_eggs>
	<RJW_hediff_fluidTypeFluidAmount>{0}: {1}</RJW_hediff_fluidTypeFluidAmount>
	<RJW_hediff_girth>Girth: {0}</RJW_hediff_girth>
	<RJW_hediff_length>Length: {0}</RJW_hediff_length>
	<RJW_hediff_maxGirth>Max Girth: {0}</RJW_hediff_maxGirth>
	<RJW_hediff_maxLength>Max Length: {0}</RJW_hediff_maxLength>
	<RJW_hediff_braSize>Bra size: {0}:{1}</RJW_hediff_braSize>
	<RJW_hediff_overbust>Overbust: {0}</RJW_hediff_overbust>
	<RJW_hediff_underbust>Underbust: {0}</RJW_hediff_underbust>
	<RJW_hediff_unknownSpecies>Unknown species</RJW_hediff_unknownSpecies>
	<RJW_hediff_weight>Weight: {0}</RJW_hediff_weight>

	<!-- RJW fertility tooltip -->
	<AgeImpactor>Age: </AgeImpactor>
	<VanillaFertilityImpactor>Fertility stat: {VALUE}%</VanillaFertilityImpactor>

	<!-- Nymphs!!! -->
	<RJW_nymph_incident_raid_title>Nymphs!!!</RJW_nymph_incident_raid_title>
	<RJW_nymph_incident_raid_description>A group of nymphs has wandered into your settlement.</RJW_nymph_incident_raid_description>
	<RJW_nymph_incident_wander_title>Nymph!</RJW_nymph_incident_wander_title>
	<RJW_nymph_incident_wander_description>A wandering nymph has decided to visit your settlement.</RJW_nymph_incident_wander_description>
	<RJW_nymph_incident_join_title>Nymph Joins</RJW_nymph_incident_join_title>
	<RJW_nymph_incident_join_description>A wandering nymph has decided to join your settlement.</RJW_nymph_incident_join_description>

	<!-- Biotech integration -->
	<PawnLacksFunctionalGenitals>{PAWN} has no working genitals.</PawnLacksFunctionalGenitals>
	<PawnLacksVagina>{PAWN} does not have a vagina.</PawnLacksVagina>
	<PawnLacksFunctionalPenis>{PAWN} does not have a functional penis.</PawnLacksFunctionalPenis>
	<VaginalWeight>reproductive handholding chance</VaginalWeight>

	<!-- Trait gain -->
	<!-- Tip: You can easily add trait-specific versions of these two by appending the trait's defname and optionally its degree -->
	<LetterLabelGainedTraitFromSex>Trait gained : {PAWN}</LetterLabelGainedTraitFromSex>
	<GainedTraitFromSex>A handholding experience has caused {PAWN} to gain the {TRAIT} trait.</GainedTraitFromSex>
	<GainedTraitFromSexNymphomaniac>Aphrodisiac-assisted overstimulation has permanently rewired {PAWN}'s brain. {PAWN_pronoun} has gained the {TRAIT} trait.</GainedTraitFromSexNymphomaniac>
	<GainedTraitFromSexFootSlut>The feat of feasting on the feel of feet is feeding a fiendish new fetish in {PAWN}. {PAWN} is now a {TRAIT}</GainedTraitFromSexFootSlut>
	<LetterLabelGainedMultipleTraitsFromSex>Traits gained: {PAWN}</LetterLabelGainedMultipleTraitsFromSex>
	<GainedMultipleTraitsFromSex>A powerful handholding experience has caused {PAWN} to gain the following traits:</GainedMultipleTraitsFromSex>
	<GainedMultipleTraitsFromSexListItem>  - {0}</GainedMultipleTraitsFromSexListItem>
</LanguageData>


code:
<?xml version="1.0" encoding="utf-8"?>
<LanguageData>
	<!-- Settings-->
	<RJWSettingsOne>SafeJobWorld - Basic Settings</RJWSettingsOne>
		<NymphTamed>Hyper-handholder Join</NymphTamed>
		<NymphTamed_desc>Spawns pawn with ('Hyper-handholder' trait) to join the colony.</NymphTamed_desc>
		<NymphWild>Hyper-handholder Wild</NymphWild>
		<NymphWild_desc>Spawns wild pawn with ('Hyper-handholder' trait) to attack the colony.</NymphWild_desc>
		<NymphRaidEasy>Hyper-handholders raid(easy)</NymphRaidEasy>
		<NymphRaidEasy_desc>Hyper-handholders decided to visit your colony.\nbaseChance is 0.1.</NymphRaidEasy_desc>
		<NymphRaidHard>Hyper-handholders raid(hard)</NymphRaidHard>
		<NymphRaidHard_desc>Hyper-handholders decided it is now their colony.\n(Game Over).\nbaseChance is 0.01.</NymphRaidHard_desc>
		<NymphRaidRP>Limp hyper-handholders raids</NymphRaidRP>
		<NymphRaidRP_desc>Switches raids to use raid points for those who are too weak for intended raids difficulty.</NymphRaidRP_desc>
		<NymphPermanentManhunter>Permanent manhunter</NymphPermanentManhunter>
		<NymphPermanentManhunter_desc>Permanent manhunter mentalstate.</NymphPermanentManhunter_desc>
		<NymphSappers>Hyper-handholders Sappers</NymphSappers>
		<NymphSappers_desc>Knock-knock! Horny can smell you behind that door! You can run but you cant hide.</NymphSappers_desc>

		<FemaleFuta>Enable futas</FemaleFuta>
		<FemaleFuta_desc>Spawn females as futas(+ penis)</FemaleFuta_desc>
		<MaleTrap>Enable traps</MaleTrap>
		<MaleTrap_desc>Spawn males as traps(+ breasts)</MaleTrap_desc>
		<male_nymph_chance>Male HH spawn chance</male_nymph_chance>
		<male_nymph_chance_desc>Male HH spawn chance \n\nValid range: 0 - 100\nDefault: 0</male_nymph_chance_desc>
		<futa_nymph_chance>Futa/Trap HH spawn chance</futa_nymph_chance>
		<futa_nymph_chance_desc>Futa/Trap HH spawn chance \n\nValid range: 0 - 100\nDefault: 0</futa_nymph_chance_desc>
		<futa_natives_chance>Futa/Trap natives spawn chance</futa_natives_chance>
		<futa_natives_chance_desc>Futa/Trap natives spawn chance \n(industrial techlevel and below) \n\nValid range: 0 - 100\nDefault: 0</futa_natives_chance_desc>
		<futa_spacers_chance>Futa/Trap spacers spawn chance</futa_spacers_chance>
		<futa_spacers_chance_desc>Futa/Trap spacers spawn chance \n\nValid range: 0 - 100\nDefault: 5</futa_spacers_chance_desc>

		<sexneed_decay_rate_name>Handholding need decay rate (%)</sexneed_decay_rate_name>
		<sexneed_decay_rate_desc>0% for no decay.\n1000000% for Handholding Planet. Recommended range: 50% to 200%.</sexneed_decay_rate_desc>
		<sexneed_fix_name>Handholding need fix</sexneed_fix_name>
		<sexneed_fix_desc>Fixes incorrect handholding need thresholds, likely significantly reduces triggers for consensual and non consensual handholding.</sexneed_fix_desc>
		<Animal_mating_cooldown>Animal mating cooldown</Animal_mating_cooldown>
		<Animal_mating_cooldown_desc>How many hours animal waits before mating.</Animal_mating_cooldown_desc>
		<AllowYouthSex>Allow youth handholding</AllowYouthSex>
		<AllowYouthSex_desc>Allow handholding between humanlikes that are in reproductive lifestage but their growth havent reached 100%.</AllowYouthSex_desc>
		<!-- obsolete -->
		<sex_age_legacymode>Legacy handholding age limiters</sex_age_legacymode>
		<sex_age_legacymode_desc>Legacy age limiters for Humanlike Pawns, pretty much broken for races with non human life expectancy, but ppl want this back so whatever.\n When disabled uses race reproductive lifestage as teen, and pawn growth (100%) as adult.</sex_age_legacymode_desc>
		<SexMinimumAge>Handholding min. age</SexMinimumAge>
		<SexMinimumAge_desc>Humanlike pawns younger than this will not have handholding at all.</SexMinimumAge_desc>
		<SexFreeForAllAge>Age of consent</SexFreeForAllAge>
		<SexFreeForAllAge_desc>Humanlike pawns younger than this will only have handholding with pawns with 2 years age difference.</SexFreeForAllAge_desc>

		<bestiality_enabled>Enable pawholding</bestiality_enabled>
		<bestiality_enabled_desc>Enable hand/pawholding between humanlikes and animals. Desired and not so much.</bestiality_enabled_desc>
		<animal_on_animal_enabled>Enable animal pawholding</animal_on_animal_enabled>
		<animal_on_animal_enabled_desc>Enable wild animals pawholding. Tamed animals will still do pawholding within their own species regardless of this setting.\nEnable interspecies handholding between (designated) animals, which may result in pregnancy.</animal_on_animal_enabled_desc>
		<necrophilia_enabled>Enable morbid handholding</necrophilia_enabled>
		<necrophilia_enabled_desc>Enable handholding with corpses. Usually limited to pawns with Necrophiliac trait, but others can sometimes do it if they are frustrated.</necrophilia_enabled_desc>
		<sounds_enabled>Enable handholding sounds</sounds_enabled>
		<sounds_enabled_desc>Enables handholding-specific sounds. Note that this has no effect on core settings: if you have sound completely disabled, this does nothing.</sounds_enabled_desc>
		<sounds_sex_volume>Handholding volume</sounds_sex_volume>
		<sounds_sex_volume_desc>Change handholding volume</sounds_sex_volume_desc>
		<sounds_cum_volume>Handholding sweating volume</sounds_cum_volume>
		<sounds_cum_volume_desc>Change handholding sweating volume</sounds_cum_volume_desc>
		<sounds_voice_volume>Voice volume</sounds_voice_volume>
		<sounds_voice_volume_desc>Change voice volume</sounds_voice_volume_desc>
		<sounds_orgasm_volume>Handholding peak volume</sounds_orgasm_volume>
		<sounds_orgasm_volume_desc>Change handholding peak volume</sounds_orgasm_volume_desc>
		<sounds_animal_on_animal_volume>Animal on animal volume modifier</sounds_animal_on_animal_volume>
		<sounds_animal_on_animal_volume_desc>Additional volume modifier for Animal on animal paw/handholding</sounds_animal_on_animal_volume_desc>

		<cum_filth>Enable handholding filth</cum_filth>
		<cum_filth_desc>Enables filth after handholding. \nNote that disabling this will make the game easier, because of the lack of filth and need for cleaning.</cum_filth_desc>

		<RPG_hero_control_name>Hero mode</RPG_hero_control_name>
		<RPG_hero_control_desc>Player can set 1 pawn as a player character and have direct unconditional control</RPG_hero_control_desc>
		<RPG_hero_control_HC_name>Hero mode (HC)</RPG_hero_control_HC_name>
		<RPG_hero_control_HC_desc>HARDCORE: Player can only control hero, get some coffee, you'll need a lot of it.\n(intended for multiplayer)</RPG_hero_control_HC_desc>
		<RPG_hero_control_Ironman_name>Hero mode (Ironman)</RPG_hero_control_Ironman_name>
		<RPG_hero_control_Ironman_desc>HARDCORE: Player can set hero only once</RPG_hero_control_Ironman_desc>

		<UseAdvancedAgeScaling>Advanced age scaling</UseAdvancedAgeScaling>
		<UseAdvancedAgeScaling_desc>Use different age scaling for non human races (long or short lifespans)</UseAdvancedAgeScaling_desc>

		<!-- Aggressive Handholding stuff-->
		<designated_freewill>Designated pawn freewill</designated_freewill>
		<designated_freewill_desc>Pawn designated for comfort or mating can initiate handholding.</designated_freewill_desc>
		<rape_enabled>Enable aggressive handholding</rape_enabled>
		<rape_enabled_desc>See hand you like? Take it by force, you can make a hat out of its owner later.\n\n Non consensual handholding.</rape_enabled_desc>
		<PrisonersBeating>Spank me daddy!</PrisonersBeating>
		<PrisonersBeating_desc>Enable rough handholding during aggressive handholding.</PrisonersBeating_desc>
		<GentlePrisonersBeating>Senpai! Please, be gentle!</GentlePrisonersBeating>
		<GentlePrisonersBeating_desc>Reduce rough handholding damage to ~0-1.</GentlePrisonersBeating_desc>
		<rape_stripping>Strip victims</rape_stripping>
		<rape_stripping_desc>Strip aggressive handholding victims</rape_stripping_desc>
		<ColonistCanCP>Enable comfort handholding by colonists</ColonistCanCP>
		<ColonistCanCP_desc>Colonists are allowed to forcefully handhold comfort pawns.</ColonistCanCP_desc>
		<VisitorsCanCP>Enable comfort handholding by visitors</VisitorsCanCP>
		<VisitorsCanCP_desc>Visitors are allowed to forcefully handhold comfort pawns.</VisitorsCanCP_desc>
		<AnimalsCanCP>Enable comfort handholding by animals</AnimalsCanCP>
		<AnimalsCanCP_desc>Animals are allowed to forcefully handhold comfort pawns. \nRequires bestiality to be enabled.</AnimalsCanCP_desc>
		<NonFutaWomenRaping_MaxVulnerability>Girls go Handholdin' (%)</NonFutaWomenRaping_MaxVulnerability>
		<NonFutaWomenRaping_MaxVulnerability_desc>Only females with vulnerability lower than this will ever do aggressive handhold with others. \nAnimals vulnerability is always 100%. \nTo check 'vulnerability' status, go to 'view information about this object' > stats.\n\nValid range: 0 - 300%</NonFutaWomenRaping_MaxVulnerability_desc>
		<Rapee_MinVulnerability_human>'To-be handholded' vulnerability (%)</Rapee_MinVulnerability_human>
		<Rapee_MinVulnerability_human_desc>Human pawns with vulnerability higher than this will be targets for aggressive handholding. \nTo check 'vulnerability' status, go to 'view information about this object' > stats.\n\nValid range: 0 - 300%</Rapee_MinVulnerability_human_desc>
		<Rapee_MinVulnerability_animals>Animals' to-be-handholded vulnerability (%)</Rapee_MinVulnerability_animals>
		<Rapee_MinVulnerability_animals_desc>Animals with vulnerability higher than this will be handholding targets for pawphiles. \nTo check 'vulnerability' status, go to 'view information about this object' > stats.\n\nValid range: 0 - 300%</Rapee_MinVulnerability_animals_desc>

	<RJWSettingsFour>SafeJobWorld - Casual Handholding Settings</RJWSettingsFour>
		<SettingHookupsEnabled>Enable hookups (overall)</SettingHookupsEnabled>
		<SettingHookupsEnabled_desc>Controls whether single pawns can have casual handholding with other single pawns</SettingHookupsEnabled_desc>
		<SettingQuickHookupsEnabled>Enable quickies.</SettingQuickHookupsEnabled>
		<SettingQuickHookupsEnabled_desc>Controls whether single pawns can have casual quick handholding with other single pawns\nWarning: This can interrupt working pawns.</SettingQuickHookupsEnabled_desc>
		<SettingNoHookupsDuringWorkHours>Disable hookups during work hours</SettingNoHookupsDuringWorkHours>
		<SettingNoHookupsDuringWorkHours_desc>Controls whether pawns can seek casual handholding during work hours.</SettingNoHookupsDuringWorkHours_desc>
		<SettingColonistsCanHookup>Colonists can hookup</SettingColonistsCanHookup>
		<SettingColonistsCanHookup_desc>Controls whether colonists are allowed to look for casual handholding.</SettingColonistsCanHookup_desc>
		<SettingColonistsCanHookupWithVisitor>Colonists can hookup with visitors</SettingColonistsCanHookupWithVisitor>
		<SettingColonistsCanHookupWithVisitor_desc>Controls whether pawns can have casual handholding with visitors to the colony.</SettingColonistsCanHookupWithVisitor_desc>
		<SettingCanHookupWithPrisoner>Non-prisoners can hookup with prisoners</SettingCanHookupWithPrisoner>
		<SettingCanHookupWithPrisoner_desc>Controls whether non-prisoner pawns can look for consensual handholding with prisoners.</SettingCanHookupWithPrisoner_desc>
		<SettingVisitorsCanHookupWithColonists>Visitors can hookup with colonists</SettingVisitorsCanHookupWithColonists>
		<SettingVisitorsCanHookupWithColonists_desc>Controls whether visiting pawns include colonists as potential partners for casual handholding.</SettingVisitorsCanHookupWithColonists_desc>
		<SettingVisitorsCanHookupWithVisitors>Visitors can hookup with other visitors</SettingVisitorsCanHookupWithVisitors>
		<SettingVisitorsCanHookupWithVisitors_desc>Controls whether visiting pawns include other visitors as potential partners for casual handholding.</SettingVisitorsCanHookupWithVisitors_desc>
		<SettingPrisonersCanHookupWithNonPrisoner>Prisoners can hookup with colonists</SettingPrisonersCanHookupWithNonPrisoner>
		<SettingPrisonersCanHookupWithNonPrisoner_desc>Controls whether prisoners include non-prisoners as potential partners for casual handholding.\nPawns, including prisoners, can only have handholding with someone they can reach, so if the prisoner can't leave their cell this is moot.</SettingPrisonersCanHookupWithNonPrisoner_desc>
		<SettingPrisonersCanHookupWithPrisoner>Prisoners can hookup with prisoners</SettingPrisonersCanHookupWithPrisoner>
		<SettingPrisonersCanHookupWithPrisoner_desc>Controls whether prisoners include other prisoners as potential partners for casual handholding.\nPawns, including prisoners, can only have handholding with someone they can reach, so if the prisoner can't leave their cell this is moot.</SettingPrisonersCanHookupWithPrisoner_desc>
		<SettingNymphosCanPickAnyone>Hyper-handholders can pick anyone</SettingNymphosCanPickAnyone>
		<SettingNymphosCanPickAnyone_desc>Controls whether Hyper-handholder pawns will pick anyone available.\nThey still obey the cheating and homewrecking settings below.</SettingNymphosCanPickAnyone_desc>
		<SettingNymphosCanCheat>Hyper-handholders can cheat</SettingNymphosCanCheat>
		<SettingNymphosCanCheat_desc>Controls whether Hyper-handholder pawns can cheat if they're feeling lack of handholding.</SettingNymphosCanCheat_desc>
		<SettingNymphosCanHomewreck>Hyper-handholders can homewreck</SettingNymphosCanHomewreck>
		<SettingNymphosCanHomewreck_desc>Controls whether Hyper-handholders pawns will handhold people who already have handholding partners.</SettingNymphosCanHomewreck_desc>
		<SettingNymphosCanHomewreckReverse>Hyper-handholders can homewreck(Reverse)</SettingNymphosCanHomewreckReverse>
		<SettingNymphosCanHomewreckReverse_desc>Controls whether Hyper-handholders pawns will accept handholding even if they have handholding partner.</SettingNymphosCanHomewreckReverse_desc>
		<SettingHookupChanceForNonNymphos>Hookup % chance per hour</SettingHookupChanceForNonNymphos>
		<SettingHookupChanceForNonNymphos_desc>The chance that a horny pawn will look for casual handholding.\nOnly checked once per hour and only when the pawn finishes their current task. Default is 30%</SettingHookupChanceForNonNymphos_desc>
		<SettingMinimumFuckabilityToHookup>Hookup minimum attractiveness1</SettingMinimumFuckabilityToHookup>
		<SettingMinimumFuckabilityToHookup_desc>Controls how attractive(SJW) both pawns must be to eachother to consider a hookup.\n Default is 10%.</SettingMinimumFuckabilityToHookup_desc>
		<SettingMinimumAttractivenessToHookup>Hookup minimum attractiveness</SettingMinimumAttractivenessToHookup>
		<SettingMinimumAttractivenessToHookup_desc>Controls how attractive(Rimworld) pawns to eachother to consider a hookup.\n Default is 50%.</SettingMinimumAttractivenessToHookup_desc>
		<SettingMinimumRelationshipToHookup>Hookup minimum opinion </SettingMinimumRelationshipToHookup>
		<SettingMinimumRelationshipToHookup_desc>Controls minimum pawns opinion for eachother to consider a hookup.\n Default is 20.</SettingMinimumRelationshipToHookup_desc>

	<RJWDebugSettings>SafeJobWorld - Debug</RJWDebugSettings>
		<!-- debug stuff-->
		<submit_button_enabled>Enable "submit" button on drafted pawns</submit_button_enabled>
		<submit_button_enabled_desc>Submit button allows you to skip more deadly part and get right to more humiliating one. \nDisable this if honor comes before life for you. \nRemember, if you change your mind, it will always be here, waiting for you.</submit_button_enabled_desc>
		<RJW_designation_box>Show SJW designations</RJW_designation_box>
		<RJW_designation_box_desc>Toggles showing SJW group of buttons in the pawn control GUI.</RJW_designation_box_desc>
		<StackRjwParts_name>Sjw parts stacking</StackRjwParts_name>
		<StackRjwParts_desc>Stack sjw parts in pawn health tab \n(Label x count)</StackRjwParts_desc>
		<maxDistanceCellsCasual_name>Handholding distance(Cells)</maxDistanceCellsCasual_name>
		<maxDistanceCellsCasual_desc>Max distance in Cells AI willing to go to reach destination/target.\n\nFast distance check - ignores obstacles (e.g. walls, mountains).\nDefault 100 cells.</maxDistanceCellsCasual_desc>
		<maxDistanceCellsRape_name>Aggressive handholding distance(Cells)</maxDistanceCellsRape_name>
		<maxDistanceCellsRape_desc>Max distance in Cells AI willing to go to reach destination/target.\n\nFast distance check - ignores obstacles (e.g. walls, mountains).\nDefault 20 cells.</maxDistanceCellsRape_desc>
		<maxDistancePathCost_name>Handholding distance(PawnPath)</maxDistancePathCost_name>
		<maxDistancePathCost_desc>Max distance ai pather considers in order to reach handholding destination/target. Slow complex calculation affected by obstacles, pawn speed and ground modifiers.\nDefault 250 ~20 cells.\n0 - disable check.</maxDistancePathCost_desc>

		<!-- cheat stuff-->
		<override_RJW_designation_checks_name>Override designation checks</override_RJW_designation_checks_name>
		<override_RJW_designation_checks_desc>Allows to set designations on all colonists ignoring conditions.\n YOU CHEATER</override_RJW_designation_checks_desc>
		<override_control>Direct control</override_control>
		<override_control_desc>Player can manually tell pawns to do handholding.\n YOU CHEATER</override_control_desc>
		<AddTrait_Rapist>Gain Aggressive handholder trait</AddTrait_Rapist>
		<AddTrait_Rapist_desc>Chance to gain aggressive handholder trait after 10 aggressively handholding acts, >12% of which are aggressive\n YOU CHEATER</AddTrait_Rapist_desc>
		<AddTrait_Masocist>Gain Masochist trait</AddTrait_Masocist>
		<AddTrait_Masocist_desc>Chance to gain masochist trait after being aggressively handholded, 5% after feeling broken stage\n YOU CHEATER</AddTrait_Masocist_desc>
		<AddTrait_Nymphomaniac>Gain Hyper-handholder trait</AddTrait_Nymphomaniac>
		<AddTrait_Nymphomaniac_desc>Chance to gain Hyper-handholder trait after 10 handholding acts, while under HumpShroom addiction\n YOU CHEATER</AddTrait_Nymphomaniac_desc>
		<AddTrait_Necrophiliac>Gain Necrophiliac trait</AddTrait_Necrophiliac>
		<AddTrait_Necrophiliac_desc>Chance to gain necrophiliac trait after 10 handholding acts, >50% of which with corpses\n YOU CHEATER</AddTrait_Necrophiliac_desc>
		<AddTrait_Nerves>Gain Nerves trait</AddTrait_Nerves>
		<AddTrait_Nerves_desc>Gain nerves trait after being aggressively handholded\n YOU CHEATER</AddTrait_Nerves_desc>
		<AddTrait_Zoophiliac>Gain Pawphile trait</AddTrait_Zoophiliac>
		<AddTrait_Zoophiliac_desc>Chance to gain pawphile trait after 10 handholding acts, >50% of which with animals\n YOU CHEATER</AddTrait_Zoophiliac_desc>
		<AddTrait_FootSlut>Gain Feetholding trait</AddTrait_FootSlut>
		<AddTrait_FootSlut_desc>Chance to gain Feetholding trait after 10 handholding acts, when getting Feetholding\n YOU CHEATER</AddTrait_FootSlut_desc>
		<AddTrait_CumSlut>Gain Loose grip HH trait</AddTrait_CumSlut>
		<AddTrait_CumSlut_desc>Chance to gain Loose grip HH trait after 10 handholding acts, when doing Loose grip handholding\n YOU CHEATER</AddTrait_CumSlut_desc>
		<AddTrait_ButtSlut>Gain Backhand HH trait</AddTrait_ButtSlut>
		<AddTrait_ButtSlut_desc>Chance to gain Backhand HH trait after 10 handholding acts, when getting backhand-handholded\n YOU CHEATER</AddTrait_ButtSlut_desc>
		<Allow_RMB_DeepTalk>RMB DeepTalk</Allow_RMB_DeepTalk>
		<Allow_RMB_DeepTalk_desc>Allows RMB-Social-DeepTalk interaction (+12 relations)\n YOU CHEATER</Allow_RMB_DeepTalk_desc>
		<Disable_bestiality_pregnancy_relations>Disable pawholding pregnancy relations</Disable_bestiality_pregnancy_relations>
		<Disable_bestiality_pregnancy_relations_desc>Disable relations(mother/father/siblings) from pawholding pregnancy.\n YOU CHEATER</Disable_bestiality_pregnancy_relations_desc>
		<Disable_egg_pregnancy_relations>Disable egg pregnancy relations</Disable_egg_pregnancy_relations>
		<Disable_egg_pregnancy_relations_desc>Disable relations(mother/father/siblings) from egg pregnancy.\n YOU CHEATER</Disable_egg_pregnancy_relations_desc>
		<Disable_MeditationFocusDrain>Disable meditation focus drain</Disable_MeditationFocusDrain>
		<Disable_MeditationFocusDrain_desc>When pawns are frustrated, they don't lose focus.\n YOU CHEATER</Disable_MeditationFocusDrain_desc>
		<Disable_RecreationDrain>Disable recreation drain</Disable_RecreationDrain>
		<Disable_RecreationDrain_desc>When pawns have boring/bad handholding due to traits/quirks, they don't lose recreation need.\n YOU CHEATER</Disable_RecreationDrain_desc>

		<!-- debug stuff-->
		<ForbidKidnap>Forbid kidnap</ForbidKidnap>
		<ForbidKidnap_desc>No kidnaping.</ForbidKidnap_desc>
		<override_lovin>Override vanilla lovin</override_lovin>
		<override_lovin_desc>Use casual handholding instead of vanilla lovin</override_lovin_desc>
		<override_matin>Override vanilla matin</override_matin>
		<override_matin_desc>Use handholding instead of vanilla matin</override_matin_desc>
		<matin_crossbreed>Matin crossbreed</matin_crossbreed>
		<matin_crossbreed_desc>Animals with same animalType(Vanilla: Canines, Dryads) will be considered same species and can mate each other.</matin_crossbreed_desc>
		<WildMode_name>Silly mode</WildMode_name>
		<WildMode_desc>EXPERIMENTAL - DO NOT REPORT BUGS IF THIS IS ENABLED. \n\nNo rules for handholding. Most limiting requirements are turned off. Enjoy the wildest side of Rimworld.</WildMode_desc>
		<HippieMode_name>Hippie mode</HippieMode_name>
		<HippieMode_desc>EXPERIMENTAL - DO NOT REPORT BUGS IF THIS IS ENABLED. \n\nIgnore Relationships for casual hookups.</HippieMode_desc>
		<GenderlessAsFuta_name>Genderless as Herm</GenderlessAsFuta_name>
		<GenderlessAsFuta_desc>USEATYOUROWNRISK. \n\nGenderless races/Pawns will be set as female and have both sets of genitals.</GenderlessAsFuta_desc>
		<DevMode_name>Development mode</DevMode_name>
		<DevMode_desc>Enables SafeJobWorld logging and stuff. You don't usually want this enabled.</DevMode_desc>
		<DebugLogJoinInBed>Debug log hookup search info</DebugLogJoinInBed>
		<DebugLogJoinInBed_desc>Enables some very spamming debug logs to help find bugs in JoinInBed operations. \nOnly devs (or someone helping them find a bug) should enable this.</DebugLogJoinInBed_desc>
		<DebugRape>Debug log aggressive handholding info</DebugRape>
		<DebugRape_desc>Enables some very spamming debug logs to help find bugs in aggressive handholding operations.\nOnly devs (or someone helping them find a bug) should enable this.</DebugRape_desc>
		<DebugInteraction>Debug log interaction info</DebugInteraction>
		<DebugInteraction_desc>Verbose mode for the interaction module.</DebugInteraction_desc>
		<DebugNymph>Debug log nymph info</DebugNymph>
		<DebugNymph_desc>Verbose mode for the nymph module.</DebugNymph_desc>

	<!-- Pregnancy stuff-->
	<RJWSettingsTwo>SafeJobWorld - Pregnancy Settings</RJWSettingsTwo>
		<UseVanillaPregnancy>Biotech DLC pregnancy</UseVanillaPregnancy>
		<UseVanillaPregnancy_desc>Use Biotech DLC pregnancy for pregnancies involving a human female.</UseVanillaPregnancy_desc>
		<RJWH_pregnancy>Enable humanlike pregnancies</RJWH_pregnancy>
		<RJWH_pregnancy_desc>Use pregnancy for human-human pregnancies.</RJWH_pregnancy_desc>
		<PregnantCoeffecientForHuman>Human Pregnancy chances (%)</PregnantCoeffecientForHuman>
		<PregnantCoeffecientForHuman_desc>Human pregnancy chances in percent.\n\nValid range: 0 - 100%</PregnantCoeffecientForHuman_desc>
		<RJWB_pregnancy>Enable bestiality pregnancies</RJWB_pregnancy>
		<RJWB_pregnancy_desc>Use pregnancy for human-animal pregnancies.</RJWB_pregnancy_desc>
		<PregnantCoeffecientForAnimals>Animal pregnancy chances (%)</PregnantCoeffecientForAnimals>
		<PregnantCoeffecientForAnimals_desc>Animal pregnancy chances in percent.\n\nValid range: 0 - 100%</PregnantCoeffecientForAnimals_desc>
		<InterspeciesImpregnantionModifier>Interspecies impregnation modifier (%)</InterspeciesImpregnantionModifier>
		<InterspeciesImpregnantionModifier_desc>Interspecies impregnation modifier in percent. At 20% this cuts the normal chance to fifth of same-species, and so on.\n\nValid range: 0 - 100%</InterspeciesImpregnantionModifier_desc>
		<UseParentMethod>DNA inheritance</UseParentMethod>
		<UseParentMethod_desc>ON:Babies have random parent dna.\nOFF:Babies are like mothers.</UseParentMethod_desc>
		<OffspringLookLikeTheirMother>Humanlike DNA inheritance</OffspringLookLikeTheirMother>
		<OffspringLookLikeTheirMother_desc>Governs humanlike pregnancies. \n100% means born babies will be of mothers race. \nAt 0% means born babies will be of father race.\n\nValid range: 0 - 100%</OffspringLookLikeTheirMother_desc>
		<OffspringIsHuman>Bestiality DNA inheritance (Mother/Father)</OffspringIsHuman>
		<OffspringIsHuman_desc>Governs Humanlike-Animal and Animal-Animal pregnancies.\n100% means born babies will be of "mother" race. \nAt 0% means born babies will be of "father" race.\n\nValid range: 0 - 100%</OffspringIsHuman_desc>
		<OffspringIsHuman2>Bestiality DNA inheritance (Human/Beast)</OffspringIsHuman2>
		<OffspringIsHuman2_desc>Governs Humanlike-Animal pregnancies.\n\n left - born babies will be of beast race. \n\n right - born babies will be of humanlike race. \n\n anything else - use the Mother/Father logic</OffspringIsHuman2_desc>
		<RJWA_pregnancy>Enable animal pregnancies</RJWA_pregnancy>
		<RJWA_pregnancy_desc>Use pregnancy for animal-animal pregnancies.</RJWA_pregnancy_desc>
		<RJWI_pregnancy>Enable egg pregnancies</RJWI_pregnancy>
		<RJWI_pregnancy_desc>Use pregnancy for ovipositor egg pregnancies.</RJWI_pregnancy_desc>
		<egg_pregnancy_implant_anyone>Egg implanting filter</egg_pregnancy_implant_anyone>
		<egg_pregnancy_implant_anyone_desc>ON:Anyone with female ovipositor can implant eggs.\nOFF:Only predefined parent type can implant eggs.</egg_pregnancy_implant_anyone_desc>
		<egg_pregnancy_fertilize_anyone>Egg fertilizing filter</egg_pregnancy_fertilize_anyone>
		<egg_pregnancy_fertilize_anyone_desc>ON:Anyone with male ovipositor can fertilize eggs.\nOFF:Only predefined parent type or same as implanter can fertilize eggs.</egg_pregnancy_fertilize_anyone_desc>
		<egg_pregnancy_genes>Egg pregnancies carry genes</egg_pregnancy_genes>
		<egg_pregnancy_genes_desc>Allows for human-human-ovipositor eggs to use normal gene inheritance.</egg_pregnancy_genes_desc>

		<RJWI_analPregnancy>Enable anal egg pregnancies</RJWI_analPregnancy>
		<RJWI_analPregnancy_desc>Allow insects to impregnate pawns anally.</RJWI_analPregnancy_desc>
		<RJWI_oralPregnancy>Enable oral egg pregnancies</RJWI_oralPregnancy>
		<RJWI_oralPregnancy_desc>Allow insects to impregnate pawns orally.</RJWI_oralPregnancy_desc>
		<egg_pregnancy_eggs_size>Egg size modifier</egg_pregnancy_eggs_size>
		<egg_pregnancy_eggs_size_desc>0 - can be implanted with unlimited eggs.</egg_pregnancy_eggs_size_desc>
		<egg_pregnancy_ovipositor_capacity_factor>Ovipositor capacity factor</egg_pregnancy_ovipositor_capacity_factor>
		<egg_pregnancy_ovipositor_capacity_factor_desc>multiplies the normal capacity of female ovipositors</egg_pregnancy_ovipositor_capacity_factor_desc>

		<MechanoidImplanting>Enable mechanoid implants</MechanoidImplanting>
		<MechanoidImplanting_desc>Allow probing and implanting by mechanoids.</MechanoidImplanting_desc>
		<SaferMechanoidImplanting>Safer mechanoid implants(')</SaferMechanoidImplanting>
		<SaferMechanoidImplanting_desc>Mechanoid implants will not kill pawns('if pregnancy was checked), instead apply 5 damage to each body part contained within the torso. Mechanoids will still be hostile</SaferMechanoidImplanting_desc>

		<CP_pregnancy>Use RimWorldChildren pregnancy for pregnancies between humanlikes</CP_pregnancy>
		<CP_pregnancy_desc>Controlls whether SJW should use own pregnancy or RimWorldChildren for human-human pregnancies.</CP_pregnancy_desc>
		<genetic_trait_filter>Filter inherited traits</genetic_trait_filter>
		<genetic_trait_filter_desc>If enabled, it will use the /Defs/NonInheritedTraits.xml to filter out the traits that should not be passed to next generation. If disabled, everything is a fair game.</genetic_trait_filter_desc>
		<max_num_momtraits_inherited>Max inherited traits from mother</max_num_momtraits_inherited>
		<max_num_poptraits_inherited>Max inherited traits from father</max_num_poptraits_inherited>

		<RJW_fertility_endAge_male>Male infertility age </RJW_fertility_endAge_male>
		<RJW_fertility_endAge_male_desc>Adjusted by lifespan for alien races. Same scale is used for animals and humanlikes.</RJW_fertility_endAge_male_desc>
		<RJW_fertility_endAge_female_humanlike>Female infertility age (humanlikes)</RJW_fertility_endAge_female_humanlike>
		<RJW_fertility_endAge_female_humanlike_desc>Unlike most animals, human females become infertile at early age. Same ratio is used for all alien races, for balance.</RJW_fertility_endAge_female_humanlike_desc>
		<RJW_fertility_endAge_female_animal>Female infertility age (animals)</RJW_fertility_endAge_female_animal>
		<RJW_fertility_endAge_female_animal_desc>Unlike humans, most female animals remain fertile until death.</RJW_fertility_endAge_female_animal_desc>
		<In_human_years> in human years</In_human_years>
		<XofLifeExpectancy>% of life expectancy</XofLifeExpectancy>

		<InterspeciesDisabled>Interspecies disabled.</InterspeciesDisabled>
		<InterspeciesMaximum>Equal to same-species.</InterspeciesMaximum>
		<AlwaysMother>Always mother's species.</AlwaysMother>
		<AlwaysFather>Always father's species.</AlwaysFather>
		<AlwaysBeast>Beast species.</AlwaysBeast>
		<AlwaysHumanlike>Humanlike species.</AlwaysHumanlike>
		<UsesOffspringIsHuman>Use Mother/Father</UsesOffspringIsHuman>
		<ComplexImpregnation>Enable complex interspecies impregnation calculation</ComplexImpregnation>
		<ComplexImpregnation_desc><![CDATA[When enabled, the impregnation chance between species depends on the difference in the body structure and size.
Examples:
  Human/Winged humanoid : ~95%
  Human/Harpy : ~75%
  Human/Dog : ~30%
  Human/Chicken : ~5%
  Wolf/Dog : ~95%
  Wolf/Chicken : ~5%
  Rooster/Harpy : ~30%

Note that the chance is further lowered by the base animal and human pregnancy sliders.
]]></ComplexImpregnation_desc>
		<phantasy_pregnancy>Phantasy pregnancy</phantasy_pregnancy>
		<phantasy_pregnancy_desc>World is filled with wicked nanomachines that accelerate children growth until they reach reproductive lifestage.\n\nHas no effect on non humans and non reproductive races.\n\nLikely doesnt work with other pregnacy mods.</phantasy_pregnancy_desc>
		<normal_pregnancy_duration>Pregnancy duration modifier.</normal_pregnancy_duration>
		<normal_pregnancy_duration_desc>Bigger -> Longer</normal_pregnancy_duration_desc>
		<egg_pregnancy_duration>Egg pregnancy duration modifier.</egg_pregnancy_duration>
		<egg_pregnancy_duration_desc>Bigger -> Longer.</egg_pregnancy_duration_desc>

	<!-- sex types -->
	<RJWSettingsThree>SafeJobWorld - Handholding Settings</RJWSettingsThree>
		<SexTypeFrequency>Handholding type frequency:\n[Higher = more common]</SexTypeFrequency>
		<vaginal>Palm-handholding</vaginal>
		<vaginal_desc>Frequency of palm-handholding.\n\nValid range: 1 - 200\nDefault: 120</vaginal_desc>
		<cunnilingus>Loose grip(C)</cunnilingus>
		<cunnilingus_desc>Frequency of loose grip handholding.\n\nValid range: 1 - 200\nDefault: 80</cunnilingus_desc>
		<anal>Backhand-handholding</anal>
		<anal_desc>Frequency of backhand-handholding.\n\nValid range: 1 - 200\nDefault: 80</anal_desc>
		<rimming>Handholding frequency</rimming>
		<rimming_desc>Frequency of handholding.\n\nValid range: 1 - 200\nDefault: 40</rimming_desc>
		<fellatio>Loose grip(F)</fellatio>
		<fellatio_desc>Frequency of loose grip.\n\nValid range: 1 - 200\nDefault: 80</fellatio_desc>
		<handjob>Finger grabing</handjob>
		<handjob_desc>Frequency of finger grabing handholding.\n\nValid range: 1 - 200\nDefault: 80</handjob_desc>
		<mutual_masturbation>Fingers intertwined</mutual_masturbation>
		<mutual_masturbation_desc>Frequency of fingers intertwined handholding.\n\nValid range: 1 - 200\nDefault: 70</mutual_masturbation_desc>
		<double_penetration>Top and bottom</double_penetration>
		<double_penetration_desc>Frequency of top and bottom handholding.\n\nValid range: 1 - 200\nDefault:60</double_penetration_desc>
		<breastjob>Over-the-shoulder</breastjob>
		<breastjob_desc>Frequency of over-the-shoulder handholding.\n\nValid range: 1 - 200\nDefault: 50</breastjob_desc>
		<fingering>One-finger</fingering>
		<fingering_desc>Frequency of one-finger handholding.\n\nValid range: 1 - 200\nDefault: 50</fingering_desc>
		<scissoring>Down-facing palm holding</scissoring>
		<scissoring_desc>Frequency of down-facing palm handholding.\n\nValid range: 1 - 200\nDefault: 50</scissoring_desc>
		<footjob>Feetholding frequency</footjob>
		<footjob_desc>Frequency of feetholding.\n\nValid range: 1 - 200\nDefault: 30</footjob_desc>
		<fisting>Wrist-grab</fisting>
		<fisting_desc>Frequency of wrist-grab handholding.\n\nValid range: 1 - 200\nDefault: 30</fisting_desc>
		<sixtynine>Fingers intertwined</sixtynine>
		<sixtynine_desc>Frequency of fingers intertwined handholding.\n\nValid range: 1 - 200\nDefault: 69</sixtynine_desc>
		<FapEverywhere>Solo everywhere</FapEverywhere>
		<FapEverywhere_desc>Pawn will self handhold where it wants.</FapEverywhere_desc>
		<FapInBed>Solo in bed</FapInBed>
		<FapInBed_desc>Pawn will self handhold in its bed.</FapInBed_desc>
		<FapInBelts>Solo with genitals blocked</FapInBelts>
		<FapInBelts_desc>Pawn can self handhold while having their genitals blocked, no one knows what does genitals have to do with handholding.</FapInBelts_desc>
		<FapInArmbinders>Solo with hands blocked</FapInArmbinders>
		<FapInArmbinders_desc>Pawn can self handhold while having their hands blocked, you're using handholding mod, what reality check do you expect?.</FapInArmbinders_desc>

		<Malesex>Allowed male handholding: </Malesex>
		<FeMalesex>Allowed female handholding: </FeMalesex>
		<AllowedSex.All>All</AllowedSex.All>
		<AllowedSex.Homo>Gay</AllowedSex.Homo>
		<AllowedSex.Nohomo>Straight</AllowedSex.Nohomo>

		<SexClothing>Clothing for handholding: </SexClothing>
		<SexClothingNude>Nude</SexClothingNude>
		<SexClothingHeadwear>Headwear only</SexClothingHeadwear>
		<SexClothingFull>Fully clothed</SexClothingFull>

		<RapeAttemptAlert>Aggressive handholding attempt alert: </RapeAttemptAlert>
		<RapeAttemptAlertAlways>Always enabled</RapeAttemptAlertAlways>
		<RapeAttemptAlertHumanlike>Only if target is humanlike</RapeAttemptAlertHumanlike>
		<RapeAttemptAlertColonist>Only if target is colonist</RapeAttemptAlertColonist>
		<RapeAttemptAlertSilent>Only show notification</RapeAttemptAlertSilent>
		<RapeAttemptAlertDisabled>Disabled</RapeAttemptAlertDisabled>

		<RapeAlert>Aggressive handholding alert: </RapeAlert>
		<RapeAlertAlways>Always enabled</RapeAlertAlways>
		<RapeAlertHumanlike>Only if target is humanlike</RapeAlertHumanlike>
		<RapeAlertColonist>Only if target is colonist</RapeAlertColonist>
		<RapeAlertSilent>Only show notification</RapeAlertSilent>
		<RapeAlertDisabled>Disabled</RapeAlertDisabled>

		<RapeAlertCP>Show for CP</RapeAlertCP>
		<RapeAlertCP_desc>Show alert when pawn designated for comforting is getting handholded.</RapeAlertCP_desc>
		<RapeAlertBreeding>Show for animal handholding</RapeAlertBreeding>
		<RapeAlertBreeding_desc>Show alert when pawn designated for breeding is getting handholded.</RapeAlertBreeding_desc>

		<SexualitySpread1>Sexuality spread source: </SexualitySpread1>
		<SexualitySpread2>Sexuality generation spread for SJW.\nTHIS IS FOR handholding ONLY\nHAS NO EFFECT ON RELATIONSHIP</SexualitySpread2>
		<SexualitySpreadVanilla>[Imported from Vanilla Rimworld]</SexualitySpreadVanilla>
		<SexualitySpreadPsychology>[Imported from Psychology]</SexualitySpreadPsychology>
		<SexualitySpreadIndividuality>[imported from [SYR]Individuality]</SexualitySpreadIndividuality>

		<SexualityAsexual>  Asexual: </SexualityAsexual>
		<SexualityPansexual>  Pansexual: </SexualityPansexual>
		<SexualityHeterosexual>  Heterosexual: </SexualityHeterosexual>
		<SexualityBisexual>  Bisexual: </SexualityBisexual>
		<SexualityGay>  Gay: </SexualityGay>

		<SexualityAsexual_desc>Low or non-existent handholding drive, generally not interested in handholding.</SexualityAsexual_desc>
		<SexualityPansexual_desc>Pansexuals disregard gender entirely.</SexualityPansexual_desc>
		<SexualityHeterosexual_desc>Heterosexuals are attracted to 'opposite' sex.</SexualityHeterosexual_desc>
		<SexualityBisexual_desc>Bisexuals are attracted to both males and females.</SexualityBisexual_desc>
		<SexualityGay_desc>Homosexuals are attracted to same sex.</SexualityGay_desc>

		<MaxQuirks>Max quirks</MaxQuirks>
		<MaxQuirks_desc>Max quirks pawn can get when created.</MaxQuirks_desc>

		<SendTraitGainLetters>Trait notifications</SendTraitGainLetters>
		<SendTraitGainLetters_desc>Enable to receive letters when a pawn gains a trait from handholding. Unimportant pawns such as traders will never trigger notifications regardless of this setting.</SendTraitGainLetters_desc>
</LanguageData>

repo_name: Timura/rjw

license: mit


code:
<?xml version="1.0" encoding="utf-8"?>
<LanguageData>
	<!-- Labels -->
	<RJW_SexGizmo_Orgasm>Orgasm</RJW_SexGizmo_Orgasm>
	<RJW_SexGizmo_RestNeed>Stamina</RJW_SexGizmo_RestNeed>
	<RJW_SexGizmo_SexNeed>Satisfaction</RJW_SexGizmo_SexNeed><!-- ? -->

	<!-- Buttons -->
	<RJW_SexGizmo_SexOverdriveTooltip>Overdrive - handholding wont end until pawn collapses or interrupted otherwise.</RJW_SexGizmo_SexOverdriveTooltip>
	<RJW_SexGizmo_HitPawn>Hit once.</RJW_SexGizmo_HitPawn>
	<RJW_SexGizmo_Cocoon>Wrap pawn into cocoon.</RJW_SexGizmo_Cocoon><!-- ? -->
	<RJW_SexGizmo_Egg>Stuff with eggs.</RJW_SexGizmo_Egg><!-- ? -->
</LanguageData>


code:
<?xml version="1.0" encoding="utf-8"?>
<LanguageData>
	<!--Sexuality card-->
	<SexcardTooltip>Show sexuality</SexcardTooltip>
	<Quirks>Quirks: </Quirks>
	<NoQuirks>No Quirks, vanilla.</NoQuirks>
	<MessyQuirk><![CDATA[
{pawn} not only produces copious amounts of sweat during handholding but {pawn_pronoun} rarely bothers to clean {pawn_possessive}self afterwards.
]]></MessyQuirk>
	<PodophileQuirk><![CDATA[
{pawn} really likes feet and prefers foot-related footholding acts.
]]></PodophileQuirk>
	<CumslutQuirk><![CDATA[
{pawn} really likes sweaty handholding .
]]></CumslutQuirk>
	<ButtslutQuirk><![CDATA[
{pawn} really likes getting Backhand-handholding.
]]></ButtslutQuirk>
	<TeratophileQuirk><![CDATA[
{pawn} prefers ugly partners. {pawn_pronoun} would also prefer larger and wilder animals if {pawn_pronoun} were into that sort of thing...
]]></TeratophileQuirk>
	<EndytophileQuirk><![CDATA[
{pawn} prefers to keep {pawn_possessive} clothes on during handholding.
]]></EndytophileQuirk>
	<ExhibitionistQuirk><![CDATA[
{pawn} enjoys having handholding where others can see.
]]></ExhibitionistQuirk>
	<GerontophileQuirk><![CDATA[
{pawn} prefers older partners (55+ on a human scale).
]]></GerontophileQuirk>
	<SomnophileQuirk><![CDATA[
{pawn} prefers {pawn_possessive} partners to be asleep
]]></SomnophileQuirk>
	<SapiosexualQuirk><![CDATA[
{pawn} prefers handholding with smart partners.
]]></SapiosexualQuirk>
	<FertileQuirk><![CDATA[
{pawn} has unusually high fertility and so is more likely to have children.
]]></FertileQuirk>
	<InfertileQuirk><![CDATA[
{pawn} has unusually low fertility and so is unlikely to have children.
]]></InfertileQuirk>
	<ImpregnationFetishQuirk><![CDATA[
{pawn} really likes the idea of someone becoming pregnant. {pawn_pronoun} prefers handholding with partners where there is a possibility of pregnancy. {pawn_pronoun} doesn't care if {pawn_pronoun} is getting pregnant or {pawn_possessive} partner is as long as babby is formed.
]]></ImpregnationFetishQuirk>
	<PregnancyFetishQuirk><![CDATA[
{pawn} prefers handholding partners who are visibly pregnant.
]]></PregnancyFetishQuirk>
	<IncubatorQuirk><![CDATA[
{pawn} has birthed so many eggs that {pawn_possessive} body has adapted to handling them. {pawn_possessive} egg incubation speed has increased.
]]></IncubatorQuirk>
	<BreederQuirk><![CDATA[
{pawn} has given birth so many times that {pawn_possessive} body has adapted to producing childrens. {pawn_possessive} pregnancies are shorter and produce more offspring.
]]></BreederQuirk>
	<VigorousQuirk><![CDATA[
{pawn} is invigorated by handholding. {pawn_pronoun} feels more rested afterwards than before.
]]></VigorousQuirk>
	<ChitinLoverQuirk><![CDATA[
{pawn} enjoys the smooth strength of a chitinous exoskeleton. {pawn_pronoun} prefers arachnoid or insectoid partners.
]]></ChitinLoverQuirk>
	<DemonLoverQuirk><![CDATA[
{pawn} is after the naughty ones. {pawn_pronoun} prefers {pawn_possessive} partners to come from the literal depths of hell, or at least look the part.
]]></DemonLoverQuirk>
	<FeatherLoverQuirk><![CDATA[
{pawn} loves that downy fluff. {pawn_pronoun} prefers avian or dinosaur partners. Because dinosaurs are birds and have feathers, as {pawn_pronoun} will explain at great length if given a chance.
]]></FeatherLoverQuirk>
	<FurLoverQuirk><![CDATA[
{pawn} prefers a partner with a thick, luxurious, snuggly-soft coat of fur.
]]></FurLoverQuirk>
	<PlantLoverQuirk><![CDATA[
{pawn} likes handholding plants leafs.
]]></PlantLoverQuirk>
	<RobotLoverQuirk><![CDATA[
Which is better, 2D or 3D? {pawn} knows that 3D-printed gives you the best of both worlds.
]]></RobotLoverQuirk>
	<ScaleLoverQuirk><![CDATA[
Who wouldn't want to handhold a dragon? Definitely not {pawn}. {pawn} wants to handhold a scaly dragon.
]]></ScaleLoverQuirk>
	<SkinLoverQuirk><![CDATA[
{pawn} prefers {pawn_possessive} partners to have smooth sensitive skin without fur or scales getting in the way. Lucky for {pawn_objective} humans are all over the place.
]]></SkinLoverQuirk>
	<SlimeLoverQuirk><![CDATA[
Because of their slippery and malleable and morphing nature, slimes are very, very good at handholding. As you will hear over and over if you listen to {pawn} talk for any length of time.
]]></SlimeLoverQuirk>
	<SexPartWants>Wants to be: </SexPartWants>
</LanguageData>


code:
ass
breast size
breasts
butt
erection
libido
nipples
oral skills
penis
penis size
sexual conquests
sexual performance
tongue
vagina
vaginal capacity


code:
general handholding
fingers intertwined handholding
loose grip handholding
on top and bottom handholding
firm�but not interlaced�grip handholding
arm draped combo handholding
one hand gently resting on top handholding
over-the-shoulder handholding
down-facing palm handholding
palm handholding
back hand handholding
interlocked fingers handholding
finger grab handholding
one-finger handholding
passive handholding
relaxed lace handholding
wrist grab handholding


code:
<?xml version="1.0" encoding="UTF-8"?>
<Patch>

	<Operation Class="PatchOperationFindMod">
		<mods>

Royalty

		</mods>
		<match Class="PatchOperationAdd">
			<xpath>/Defs/HediffDef[defName="LoveEnhancer"]</xpath>
			<value>
				<stages>

						<statOffsets>
							<SexSatisfaction>0.15</SexSatisfaction>
						</statOffsets>

				</stages>
			</value>
		</match>
	</Operation>
</Patch>


code:
<Patch>
	<Operation Class="PatchOperationSequence">
		<operations>

				<mods>

Royalty

				</mods>
				<match Class="PatchOperationFindMod">
					<mods>

Anime Tree

					</mods>
					<match Class="PatchOperationAdd">
						<xpath>/Defs/ThingDef[defName="Plant_TreeAnima"]/comps/li[@Class="CompProperties_MeditationFocus"]/focusTypes</xpath>
						<value>

Sex

						</value>
					</match>
				</match>

		</operations>
	</Operation>
</Patch>


code:
<?xml version="1.0" encoding="utf-8" ?>
<Patch>

	<Operation Class="PatchOperationSequence">
		<success>Always</success>
		<operations>

				<xpath>Defs/DutyDef[defName="BI_DefendAndExpandHive"]</xpath>

				<xpath>Defs/DutyDef[defName="BI_DefendAndExpandHive"]/thinkNode/subNodes/li[@Class="ThinkNode_ChancePerHour_Constant"]</xpath>
				<value>

				</value>

		</operations>
	</Operation>
</Patch>


code:
<?xml version="1.0" encoding="utf-8" ?>
<Patch>

	<Operation Class="PatchOperationAdd">
		<xpath>Defs/BodyDef[defName != "Human"]/corePart[def != "MechanicalThorax" and def != "MechanicalThoraxCanManipulate" and def != "MechanicalCentipedeBodyFirstRing" and def != "MechanicalTermiteBodyFirstRing" and def != "MechanicalDiabolusBodyFirstRing" and def != "MechanicalWarqueenBodyFirstRing"]/parts</xpath>
		<value>

				<def>Genitals</def>
				<coverage>0.005</coverage>
				<height>Bottom</height>
				<depth>Outside</depth>
				<groups>

Torso

GenitalsBPG

				</groups>

		</value>
	</Operation>

	<Operation Class="PatchOperationAdd">
		<xpath>Defs/BodyDef[defName != "Human"]/corePart[def != "MechanicalThorax" and def != "MechanicalThoraxCanManipulate" and def != "MechanicalCentipedeBodyFirstRing" and def != "MechanicalTermiteBodyFirstRing" and def != "MechanicalDiabolusBodyFirstRing" and def != "MechanicalWarqueenBodyFirstRing"]/parts</xpath>
		<value>

				<def>Chest</def>
				<coverage>0.02</coverage>
				<height>Top</height>
				<depth>Outside</depth>
				<groups>

Torso

ChestBPG

				</groups>

		</value>
	</Operation>

	<Operation Class="PatchOperationAdd">
		<xpath>Defs/BodyDef[defName != "Human"]/corePart[def != "MechanicalThorax" and def != "MechanicalThoraxCanManipulate" and def != "MechanicalCentipedeBodyFirstRing" and def != "MechanicalTermiteBodyFirstRing" and def != "MechanicalDiabolusBodyFirstRing" and def != "MechanicalWarqueenBodyFirstRing"]/parts</xpath>
		<value>

				<def>Flank</def>
				<coverage>0.02</coverage>
				<height>Bottom</height>
				<depth>Outside</depth>
				<groups>

Torso

FlankBPG

				</groups>

		</value>
	</Operation>

	<Operation Class="PatchOperationAdd">
		<xpath>Defs/BodyDef[defName != "Human"]/corePart[def != "MechanicalThorax" and def != "MechanicalThoraxCanManipulate" and def != "MechanicalCentipedeBodyFirstRing" and def != "MechanicalTermiteBodyFirstRing" and def != "MechanicalDiabolusBodyFirstRing" and def != "MechanicalWarqueenBodyFirstRing"]/parts</xpath>
		<value>

				<def>Anus</def>
				<coverage>0.001</coverage>
				<height>Bottom</height>
				<depth>Inside</depth>
				<groups>

Torso

AnusBPG

				</groups>

		</value>
	</Operation>
</Patch>


code:
<?xml version="1.0" encoding="utf-8" ?>
<Patch>

	<Operation Class="PatchOperationAdd">
		<xpath>Defs/BodyDef[defName = "Human"]/corePart/parts</xpath>
		<value>

				<def>Genitals</def>
				<coverage>0.005</coverage>
				<height>Bottom</height>
				<depth>Outside</depth>
				<groups>

Torso

GenitalsBPG

				</groups>

				<def>Chest</def>
				<coverage>0.02</coverage>
				<height>Top</height>
				<depth>Outside</depth>
				<groups>

Torso

ChestBPG

				</groups>

				<def>Anus</def>
				<coverage>0.001</coverage>
				<height>Bottom</height>
				<depth>Inside</depth>
				<groups>

Torso

AnusBPG

				</groups>

		</value>
	</Operation>

	<Operation Class="PatchOperationAdd">
		<xpath>Defs/BodyDef[defName = "Human"]/corePart/parts</xpath>
		<value>

				<def>Flank</def>
				<coverage>0.02</coverage>
				<height>Bottom</height>
				<depth>Outside</depth>
				<groups>

Torso

FlankBPG

				</groups>

		</value>
	</Operation>
</Patch>


code:
<?xml version="1.0" encoding="utf-8" ?>

<Patch>

	<Operation Class="PatchOperationAdd">
		<xpath>Defs/BodyDef/corePart[def = "MechanicalThorax"]/parts</xpath>
		<value>

				<def>MechGenitals</def>
				<coverage>0.001</coverage>
				<depth>Inside</depth>

		</value>
	</Operation>
	<Operation Class="PatchOperationAdd">
		<xpath>Defs/BodyDef/corePart[def = "MechanicalThoraxCanManipulate"]/parts</xpath>
		<value>

				<def>MechGenitals</def>
				<coverage>0.001</coverage>
				<depth>Inside</depth>

		</value>
	</Operation>
	<Operation Class="PatchOperationAdd">
		<xpath>Defs/BodyDef/corePart[def = "MechanicalCentipedeBodyFirstRing"]/parts/li[def = "MechanicalCentipedeBodySecondRing"]/parts</xpath>
		<value>

				<def>MechGenitals</def>
				<coverage>0.001</coverage>
				<depth>Inside</depth>

		</value>
	</Operation>
	<Operation Class="PatchOperationAdd">
		<xpath>Defs/BodyDef/corePart[def = "MechanicalTermiteBodyFirstRing"]/parts/li[def = "MechanicalTermiteBodySecondRing"]/parts</xpath>
		<value>

				<def>MechGenitals</def>
				<coverage>0.001</coverage>
				<depth>Inside</depth>

		</value>
	</Operation>

	<Operation Class="PatchOperationFindMod">
		<mods>

Biotech

		</mods>
		<match Class="PatchOperationAdd">
			<xpath>Defs/BodyDef/corePart[def = "MechanicalDiabolusBodyFirstRing"]/parts</xpath>
			<value>

					<def>MechGenitals</def>
					<coverage>0.001</coverage>
					<depth>Inside</depth>

			</value>
		</match>
	</Operation>

	<Operation Class="PatchOperationFindMod">
		<mods>

Biotech

		</mods>
		<match Class="PatchOperationAdd">
			<xpath>Defs/BodyDef/corePart[def = "MechanicalWarqueenBodyFirstRing"]/parts/li[def = "MechanicalWarqueenBodySecondRing"]/parts</xpath>
			<value>

					<def>MechGenitals</def>
					<coverage>0.001</coverage>
					<depth>Inside</depth>

			</value>
		</match>
	</Operation>
</Patch>


code:
<?xml version="1.0" encoding="utf-8" ?>
<Patch>

</Patch>


code:
<?xml version="1.0" encoding="utf-8" ?>
<Patch>
	<!--Rape prisoners in NonPlayerHome-->
	<Operation Class="PatchOperationInsert">
		<xpath>Defs/DutyDef[defName = "DefendBase"]/thinkNode/subNodes/li[@Class="ThinkNode_ForbidOutsideFlagRadius"]/subNodes/li[@Class="ThinkNode_Subtree"]</xpath>
		<value>
			<li Class="rjw.JobGiver_AIRapePrisoner" />
		</value>
	</Operation>
</Patch>


code:
<?xml version="1.0" encoding="utf-8" ?>
<Patch>
	<Operation Class="PatchOperationInsert">
		<xpath>Defs/DutyDef[defName = "AssaultColony"]/thinkNode/subNodes/li[@Class="JobGiver_AIFightEnemies"]</xpath>
		<value>

		</value>
	</Operation>
	<Operation Class="PatchOperationInsert">
		<xpath>Defs/DutyDef[defName = "AssaultColony"]/thinkNode/subNodes/li[@Class="JobGiver_AITrashColonyClose"]</xpath>
		<value>

		</value>
	</Operation>
	<Operation Class="PatchOperationInsert">
		<xpath>Defs/DutyDef[defName = "Sapper"]/thinkNode/subNodes/li[@Class="JobGiver_AIFightEnemies"]</xpath>
		<value>

		</value>
	</Operation>
	<Operation Class="PatchOperationInsert">
		<xpath>Defs/DutyDef[defName = "Defend"]/thinkNode/subNodes/li[@Class="ThinkNode_ForbidOutsideFlagRadius"]</xpath>
		<value>

		</value>
	</Operation>
	<Operation Class="PatchOperationInsert">
		<xpath>Defs/DutyDef[defName = "DefendBase"]/thinkNode/subNodes/li[@Class="JobGiver_AIDefendPoint"]</xpath>
		<value>

		</value>
	</Operation>
	<Operation Class="PatchOperationInsert">
		<xpath>Defs/DutyDef[defName = "HuntEnemiesIndividual"]/thinkNode/subNodes/li[@Class="JobGiver_AIFightEnemies"]</xpath>
		<value>

		</value>
	</Operation>
	<Operation Class="PatchOperationInsert">
		<xpath>Defs/DutyDef[defName = "DefendAndExpandHive"]/thinkNode/subNodes/li[@Class="ThinkNode_Tagger"]</xpath>
		<value>

		</value>
	</Operation>
	<Operation Class="PatchOperationInsert">
		<xpath>Defs/DutyDef[defName = "DefendHiveAggressively"]/thinkNode/subNodes/li[@Class="JobGiver_HiveDefense"]</xpath>
		<value>

		</value>
	</Operation>
	<Operation Class="PatchOperationInsert">
		<xpath>Defs/ThinkTreeDef[defName="MentalStateNonCritical"]/thinkRoot[@Class="ThinkNode_Tagger"]/subNodes/li[stateClass="MentalState_Manhunter"]/subNodes/li[@Class="ThinkNode_Priority"]/subNodes/li[@Class="JobGiver_Manhunter"]</xpath>
		<value>

		</value>
	</Operation>

</Patch>


code:
<?xml version="1.0" encoding="utf-8"?>
<Patch>
  <Operation Class="PatchOperationFindMod">
    <mods>

[NL] Facial Animation - WIP

    </mods>
    <match Class="PatchOperationSequence">
      <success>Always</success>
      <operations>

          <xpath>/Defs/FacialAnimation.FaceAnimationDef[defName="Lovin" or defName="Lovin2"]/targetJobs</xpath>
          <success>Always</success>
          <value>

RJW_Masturbate

GettinBred

Bestiality

BestialityForFemale

ViolateCorpse

Quickie

GettingQuickie

GettinRaped

JoinInBed

GettinLoved

GettinLicked

GettinSucked

          </value>

          <xpath>/Defs/FacialAnimation.FaceAnimationDef[defName="WaitCombat" or defName="Wait_Combat_Rare"]/targetJobs</xpath>
          <success>Always</success>
          <value>

RapeComfortPawn

RandomRape

RapeEnemy

          </value>

          <xpath>/Defs/FacialAnimation.FaceAnimationDef[defName="Wear" or defName="Wear2" or defName="Wear3"]/targetJobs</xpath>
          <success>Always</success>
          <value>

StruggleInBondageGear

          </value>

          <mods>

Rimworld-Animations

          </mods>
          <match Class="PatchOperationSequence">
            <success>Always</success>
            <operations>

                <xpath>/Defs/FacialAnimation.FaceAnimationDef[defName="Lovin" or defName="Lovin2"]/animationFrames/li[1]/headOffset</xpath>
                <success>Always</success>

                <xpath>/Defs/FacialAnimation.FaceAnimationDef[defName="Lovin"]/animationFrames/li[2]/headOffset</xpath>
                <success>Always</success>

                <xpath>/Defs/FacialAnimation.FaceAnimationDef[defName="Lovin"]/animationFrames/li[3]/headOffset</xpath>
                <success>Always</success>

				<xpath>/Defs/FacialAnimation.FaceAnimationDef[defName="Lovin" or defName="Lovin2"]/targetJobs</xpath>
				<success>Always</success>
				<value>

JoinInBedAnimation

GettinLovedAnimation

				</value>

            </operations>
          </match>

      </operations>
    </match>
  </Operation>
</Patch>


code:
<?xml version="1.0" encoding="utf-8" ?>
<Patch>

	<Operation Class="PatchOperationAdd">
		<xpath>Defs/ThinkTreeDef[defName="MentalStateCritical"]/thinkRoot[@Class="ThinkNode_Tagger"]/subNodes</xpath>
		<value>

				<state>RandomRape</state>
				<subNodes>

						<need>Rest</need>
						<threshold>0.05</threshold>
						<invert>true</invert>
						<subNodes>

						</subNodes>

						<minPriority>0.5</minPriority>
						<subNodes>

								<subNodes>

								</subNodes>

						</subNodes>

				</subNodes>

		</value>
	</Operation>
</Patch>


code:
<?xml version="1.0" encoding="utf-8" ?>
<Patch>
	<Operation Class="PatchOperationSequence">
		<success>Always</success>
		<operations>

				<xpath>Defs/TraitDef[defName="Prude"]</xpath>

				<xpath>Defs/TraitDef[defName="Nymphomaniac"]/conflictingTraits</xpath>
				<value>

Prude

				</value>

				<xpath>Defs/TraitDef[defName="Prude"]/conflictingTraits</xpath>
				<value>

Nymphomaniac

				</value>

				<xpath>Defs/TraitDef[defName="Prude"]/degreeDatas/li</xpath>
				<value>
					<statOffsets>
						<SexFrequency>-0.3</SexFrequency>
					</statOffsets>
				</value>

		</operations>
	</Operation>

	<Operation Class="PatchOperationSequence">
		<success>Always</success>
		<operations>

				<xpath>Defs/TraitDef[defName="Faithful"]</xpath>

				<xpath>Defs/TraitDef[defName="Nymphomaniac"]/conflictingTraits</xpath>
				<value>

Faithful

				</value>

				<xpath>Defs/TraitDef[defName="Faithful"]/conflictingTraits</xpath>
				<value>

Nymphomaniac

				</value>

		</operations>
	</Operation>

	<Operation Class="PatchOperationConditional">
		<xpath>Defs/TraitDef[defName="Nimble"]/degreeDatas/li/statOffsets</xpath>
		<nomatch Class="PatchOperationAdd">
			<xpath>Defs/TraitDef[defName="Nimble"]/degreeDatas/li</xpath>
			<value>
				<statOffsets>
					<Vulnerability>-0.1</Vulnerability>
				</statOffsets>
			</value>
		</nomatch>
		<match Class="PatchOperationAdd">
			<xpath>Defs/TraitDef[defName="Nimble"]/degreeDatas/li/statOffsets</xpath>
			<value>
				<Vulnerability>-0.1</Vulnerability>
			</value>
		</match>
	</Operation>

	<Operation Class="PatchOperationConditional">
		<xpath>Defs/TraitDef[defName="Bloodlust"]/degreeDatas/li/statOffsets</xpath>
		<nomatch Class="PatchOperationAdd">
			<xpath>Defs/TraitDef[defName="Bloodlust"]/degreeDatas/li</xpath>
			<value>
				<statOffsets>
					<Vulnerability>-0.1</Vulnerability>
				</statOffsets>
			</value>
		</nomatch>
		<match Class="PatchOperationAdd">
			<xpath>Defs/TraitDef[defName="Bloodlust"]/degreeDatas/li/statOffsets</xpath>
			<value>
				<Vulnerability>-0.1</Vulnerability>
			</value>
		</match>
	</Operation>

	<Operation Class="PatchOperationConditional">
		<xpath>Defs/TraitDef[defName="Tough"]/degreeDatas/li/statOffsets</xpath>
		<nomatch Class="PatchOperationAdd">
			<xpath>Defs/TraitDef[defName="Tough"]/degreeDatas/li</xpath>
			<value>
				<statOffsets>
					<Vulnerability>-0.4</Vulnerability>
				</statOffsets>
			</value>
		</nomatch>
		<match Class="PatchOperationAdd">
			<xpath>Defs/TraitDef[defName="Tough"]/degreeDatas/li/statOffsets</xpath>
			<value>
				<Vulnerability>-0.4</Vulnerability>
			</value>
		</match>
	</Operation>

	<Operation Class="PatchOperationConditional">
		<xpath>Defs/TraitDef[defName="TooSmart"]/degreeDatas/li/statOffsets</xpath>
		<nomatch Class="PatchOperationAdd">
			<xpath>Defs/TraitDef[defName="TooSmart"]/degreeDatas/li</xpath>
			<value>
				<statOffsets>
					<Vulnerability>-0.3</Vulnerability>
				</statOffsets>
			</value>
		</nomatch>
		<match Class="PatchOperationAdd">
			<xpath>Defs/TraitDef[defName="TooSmart"]/degreeDatas/li/statOffsets</xpath>
			<value>
				<Vulnerability>-0.3</Vulnerability>
			</value>
		</match>
	</Operation>

	<Operation Class="PatchOperationConditional">
		<xpath>Defs/TraitDef[defName="Wimp"]/degreeDatas/li/statOffsets</xpath>
		<nomatch Class="PatchOperationAdd">
			<xpath>Defs/TraitDef[defName="Wimp"]/degreeDatas/li</xpath>
			<value>
				<statOffsets>
					<Vulnerability>0.2</Vulnerability>
				</statOffsets>
			</value>
		</nomatch>
		<match Class="PatchOperationAdd">
			<xpath>Defs/TraitDef[defName="Wimp"]/degreeDatas/li/statOffsets</xpath>
			<value>
				<Vulnerability>0.2</Vulnerability>
			</value>
		</match>
	</Operation>

	<Operation Class="PatchOperationConditional">
		<xpath>Defs/TraitDef[defName="Masochist"]/degreeDatas/li/statOffsets</xpath>
		<nomatch Class="PatchOperationAdd">
			<xpath>Defs/TraitDef[defName="Masochist"]/degreeDatas/li</xpath>
			<value>
				<statOffsets>
					<Vulnerability>0.3</Vulnerability>
				</statOffsets>
			</value>
		</nomatch>
		<match Class="PatchOperationAdd">
			<xpath>Defs/TraitDef[defName="Masochist"]/degreeDatas/li/statOffsets</xpath>
			<value>
				<Vulnerability>0.3</Vulnerability>
			</value>
		</match>
	</Operation>

	<Operation Class="PatchOperationConditional">
		<xpath>Defs/TraitDef[defName="Ascetic"]/degreeDatas/li/statOffsets</xpath>
		<nomatch Class="PatchOperationAdd">
			<xpath>Defs/TraitDef[defName="Ascetic"]/degreeDatas/li</xpath>
			<value>
				<statOffsets>
					<SexFrequency>-0.3</SexFrequency>
				</statOffsets>
			</value>
		</nomatch>
		<match Class="PatchOperationAdd">
			<xpath>Defs/TraitDef[defName="Ascetic"]/degreeDatas/li/statOffsets</xpath>
			<value>
				<SexFrequency>-0.3</SexFrequency>
			</value>
		</match>
	</Operation>

	<Operation Class="PatchOperationConditional">
		<xpath>Defs/TraitDef[defName="BodyPurist"]/degreeDatas/li/statOffsets</xpath>
		<nomatch Class="PatchOperationAdd">
			<xpath>Defs/TraitDef[defName="BodyPurist"]/degreeDatas/li</xpath>
			<value>
				<statOffsets>
					<SexFrequency>-0.1</SexFrequency>
				</statOffsets>
			</value>
		</nomatch>
		<match Class="PatchOperationAdd">
			<xpath>Defs/TraitDef[defName="BodyPurist"]/degreeDatas/li/statOffsets</xpath>
			<value>
				<SexFrequency>-0.1</SexFrequency>
			</value>
		</match>
	</Operation>

	<Operation Class="PatchOperationSequence">
		<success>Always</success>
		<operations>

				<xpath>Defs/TraitDef[defName="Asexual"]</xpath>

				<xpath>Defs/TraitDef[defName="Necrophiliac"]/conflictingTraits</xpath>
				<value>

Asexual

				</value>

				<xpath>Defs/TraitDef[defName="Nymphomaniac"]/conflictingTraits</xpath>
				<value>

Asexual

				</value>

				<xpath>Defs/TraitDef[defName="Rapist"]/conflictingTraits</xpath>
				<value>

Asexual

				</value>

				<xpath>Defs/TraitDef[defName="Zoophile"]/conflictingTraits</xpath>
				<value>

Asexual

				</value>

				<xpath>Defs/TraitDef[defName="Asexual"]/conflictingTraits</xpath>
				<value>

Necrophiliac

Nymphomaniac

Rapist

Zoophile

				</value>

		</operations>
	</Operation>
</Patch>


code:
<?xml version="1.0" encoding="utf-8" ?>
<Patch>

	<Operation Class="PatchOperationAdd">
		<xpath>Defs/ThingDef[@Name="AnimalThingBase"]/recipes</xpath>
		<value>

DeterminePregnancy

RJW_AbortionHuman

RJW_AbortionBeast

RJW_AbortionMech

RJW_HackMech

RJW_RemoveRestraints

RJW_RemoveCocoon

RemoveUdder

		</value>
	</Operation>
</Patch>


code:
<?xml version="1.0" encoding="utf-8" ?>
<Patch>
  <Operation Class="PatchOperationAdd">
    <xpath>Defs/RulePackDef[defName = "GlobalUtility"]/include</xpath>
    <value>

TalkTopicsSex

    </value>
  </Operation>

  <Operation Class="PatchOperationAdd">
    <xpath>Defs/InteractionDef[defName = "DeepTalk"]/logRulesInitiator/rulesStrings</xpath>
    <value>

subject(p=0.24)->[TalkTopicSex]

    </value>
  </Operation>

  <Operation Class="PatchOperationAdd">
    <xpath>Defs/InteractionDef[defName = "Chitchat"]/logRulesInitiator/rulesStrings</xpath>
    <value>

r_logentry(p=0.12)->[INITIATOR_nameDef] and [RECIPIENT_nameDef] [talkedabout] [TalkTopicSex].

r_logentry(p=0.12)->[INITIATOR_nameDef] [talkedabout] [TalkTopicSex] with [RECIPIENT_nameDef].

r_logentry(p=0.24)->[INITIATOR_nameDef] [commentedabout] [TalkTopicSex] to [RECIPIENT_nameDef].

    </value>
  </Operation>
</Patch>


code:
<Patch>
	<Operation Class="PatchOperationSequence">
		<success>Always</success>
		<operations>

				<xpath>Defs/ThoughtDef[defName="HarmedMe"]/nullifyingTraits</xpath>
				<value>

Masochist

				</value>

		</operations>
	</Operation>
</Patch>


code:
<Patch>
	<Operation Class="PatchOperationSequence">
		<success>Always</success>
		<operations>

				<xpath>Defs/ThoughtDef[defName="ObservedLayingCorpse"]/nullifyingTraits</xpath>
				<value>

Necrophiliac

				</value>

				<xpath>Defs/ThoughtDef[defName="ObservedLayingRottingCorpse"]/nullifyingTraits</xpath>
				<value>

Necrophiliac

				</value>

		</operations>
	</Operation>
</Patch>


code:
<?xml version="1.0" encoding="utf-8" ?>
<Patch>

	<Operation Class="PatchOperationFindMod">
		<mods>

Vanilla Psycasts Expanded

		</mods>
		<match Class="PatchOperationAddModExtension">
			<xpath>/Defs/MeditationFocusDef[defName="Sex"]</xpath>
			<value>

					<icon>UI/PsyfocusIcons/PsyfocusSex</icon>

			</value>
		</match>
	</Operation>
</Patch>


code:
root=true

[*.{cs,xml}]
indent_style = tab


code:
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;

// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("RimJobWorld")]
[assembly: AssemblyDescription("Adult mod for Rimworld")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Community Project")]
[assembly: AssemblyProduct("RimJobWorld")]
[assembly: AssemblyCopyright("Copyright © 2018")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]

// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("c2825019-7f0b-456d-85a3-479c1a2a8805")]

// Version information for an assembly consists of the following four values:
//
//      Major Version
//      Minor Version
//      Build Number
//      Revision
//
[assembly: AssemblyVersion("1.0.0.0")]


code:
<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="Lib.Harmony" version="2.2.2" targetFramework="net472" />
  <package id="UnlimitedHugs.Rimworld.HugsLib" version="9.0.1" targetFramework="net472" />
</packages>


code:
/*
Core versions of scripts addapted for Greater Good
*/

using System;
using System.Collections.Generic;
using System.Linq;
using RimWorld;
using RimWorld.Planet;
using Verse;
using rjw;

namespace rjw_CORE_EXPOSED
{
	// used in Vulnerability StatDef calculation
	public class SkillNeed_BaseBonus : SkillNeed
	{
		private float baseValue = 0.5f;

		private float bonusPerLevel = 0.05f;

		public override float ValueFor(Pawn pawn)
		{
			if (pawn.skills == null)
			{
				return 1f;
			}
			int level = pawn.skills.GetSkill(this.skill).Level;
			// remove melee bonus for pawns: downed, sleeping/resting/lying, wearing armbinder
			if (pawn.Downed || pawn.GetPosture() != PawnPosture.Standing ||
				(xxx.RjwExIsActive && pawn.health.hediffSet.HasHediff(xxx.RjwEx_Armbinder)))  // Simple verification on RJW side, but ideally this method should just be patched in RJW-EX to return valueAtLevel(0) if Armbinder active
				level = 0;
			return this.ValueAtLevel(level);
		}

		private float ValueAtLevel(int level)
		{
			return this.baseValue + this.bonusPerLevel * (float)level;
		}

		public override IEnumerable<string> ConfigErrors()
		{
			foreach (string error in base.ConfigErrors())
			{
				yield return error;
			}
			for (int i = 1; i <= 20; i++)
			{
				float factor = this.ValueAtLevel(i);
				if (factor <= 0f)
				{
					yield return "SkillNeed yields factor < 0 at skill level " + i;
				}
			}
		}
	}

	public static class LovePartnerRelationUtility
	{
		public static float LovinMtbSinglePawnFactor(Pawn pawn)
		{
			float num = 1f;
			num /= 1f - pawn.health.hediffSet.PainTotal;
			float efficiency = pawn.health.capacities.GetLevel(PawnCapacityDefOf.Consciousness);
			if (efficiency < 0.5f)
			{
				num /= efficiency * 2f;
			}

			if (!pawn.RaceProps.Humanlike)
			{
				return num * 4f;
			}
			if (RimWorld.LovePartnerRelationUtility.ExistingLovePartner(pawn) != null)
			{
				num *= 2f; //This is a factor which makes pawns with love partners less likely to do fappin/random raping/rapingCP/bestiality/necro.
			}
			else if (pawn.gender == Gender.Male)
			{
				num /= 1.25f; //This accounts for single men
			}
			return num / GenMath.FlatHill(0.0001f, 8f, 13f, 28f, 50f, 0.15f, pawn.ageTracker.AgeBiologicalYearsFloat);//this needs to be changed
		}
	}

	public static class MedicalRecipesUtility
	{
		public static bool IsCleanAndDroppable(Pawn pawn, BodyPartRecord part)
		{
			return IsClean(pawn, part) && part.def.spawnThingOnRemoved != null;
		}
		//TODO: add check if hediff are bad?
		public static bool IsClean(Pawn pawn, BodyPartRecord part)
		{
			//in vanilla Hediff = always bad?
			return !pawn.Dead && !(from x in pawn.health.hediffSet.hediffs
									where (x.Part == part)
									select x).Any<Hediff>();
		}

		public static bool IsViolationOnPawn(Pawn pawn, BodyPartRecord part, Faction billDoerFaction)
		{
			return pawn.Faction != billDoerFaction || HealthUtility.PartRemovalIntent(pawn, part) == BodyPartRemovalIntent.Harvest;
		}

		public static void RestorePartAndSpawnAllPreviousParts(Pawn pawn, BodyPartRecord part, IntVec3 pos, Map map)
		{
			SpawnNaturalPartIfClean(pawn, part, pos, map);
			SpawnThingsFromHediffs(pawn, part, pos, map);
			pawn.health.RestorePart(part, null, true);
		}

		// always false since rjw uses hediffs for genitals, thus its always dirty
		public static Thing SpawnNaturalPartIfClean(Pawn pawn, BodyPartRecord part, IntVec3 pos, Map map)
		{
			if (MedicalRecipesUtility.IsCleanAndDroppable(pawn, part))
			{
				//normal/rimworld parts
				return GenSpawn.Spawn(part.def.spawnThingOnRemoved, pos, map);
			}
			return null;
		}

		/// <summary>
		/// spawn rjw parts after operation
		/// </summary>
		/// <param name="pawn"></param>
		/// <param name="part"></param>
		/// <param name="pos"></param>
		/// <param name="map"></param>
		public static void SpawnThingsFromHediffs(Pawn pawn, BodyPartRecord part, IntVec3 pos, Map map)
		{
			if (!pawn.health.hediffSet.GetNotMissingParts(BodyPartHeight.Undefined, BodyPartDepth.Undefined).Contains(part))
			{
				return;
			}
			if (pawn.Dead)
			{
				return;
			}
			IEnumerable<Hediff> enumerable = from x in pawn.health.hediffSet.hediffs
											 where x.Part == part
											 select x;
			//RJW parts and other implants?
			foreach (Hediff current in enumerable)
			{
				if (current.def.spawnThingOnRemoved != null)
				{
					//Thing thing = GenSpawn.Spawn(current.def.spawnThingOnRemoved, pos, map);

					//spawn thing
					GenSpawn.Spawn(SexPartAdder.recipePartRemover(current), pos, map);
				}
			}
			//spawn sub parts? not sure why would it call itself but w/e
			for (int i = 0; i < part.parts.Count; i++)
			{
				MedicalRecipesUtility.SpawnThingsFromHediffs(pawn, part.parts[i], pos, map);
			}
		}
	}

	public class Recipe_RemoveBodyPart : Recipe_Surgery
	{
		public virtual bool blocked(Pawn p)
		{
			return false;
		}
		public override IEnumerable<BodyPartRecord> GetPartsToApplyOn(Pawn pawn, RecipeDef recipe)
		{
			if (!blocked(pawn))
			{
				IEnumerable<BodyPartRecord> parts = pawn.health.hediffSet.GetNotMissingParts(BodyPartHeight.Undefined, BodyPartDepth.Undefined);
				foreach (BodyPartRecord part in parts)
				{
					if (pawn.health.hediffSet.HasDirectlyAddedPartFor(part))
					{
						yield return part;
					}
					if (MedicalRecipesUtility.IsCleanAndDroppable(pawn, part))
					{
						yield return part;
					}
					if (part != pawn.RaceProps.body.corePart && part.def.canSuggestAmputation && pawn.health.hediffSet.hediffs.Any((Hediff d) => !(d is Hediff_Injury) && d.def.isBad && d.Visible && d.Part == part))
					{
						yield return part;
					}
				}
			}
		}

		private const int ViolationGoodwillImpact = -15;

		public override void ApplyOnPawn(Pawn pawn, BodyPartRecord part, Pawn billDoer, List<Thing> ingredients, Bill bill)
		{
			bool flag = MedicalRecipesUtility.IsClean(pawn, part);
			bool flag2 = MedicalRecipesUtility.IsViolationOnPawn(pawn, part, Faction.OfPlayer);
			if (billDoer != null)
			{
				if (base.CheckSurgeryFail(billDoer, pawn, ingredients, part, bill))
				{
					return;
				}
				TaleRecorder.RecordTale(TaleDefOf.DidSurgery, new object[]
				{
					billDoer,
					pawn
				});
				MedicalRecipesUtility.SpawnNaturalPartIfClean(pawn, part, billDoer.Position, billDoer.Map);
				MedicalRecipesUtility.SpawnThingsFromHediffs(pawn, part, billDoer.Position, billDoer.Map);
			}
			DamageDef surgicalCut = DamageDefOf.SurgicalCut;
			float amount = 99999f;
			float armorPenetration = 999f;
			pawn.TakeDamage(new DamageInfo(surgicalCut, amount, armorPenetration, -1f, null, part, null, DamageInfo.SourceCategory.ThingOrUnknown, null));
			if (flag)
			{
				if (pawn.Dead)
				{
					ThoughtUtility.GiveThoughtsForPawnExecuted(pawn, billDoer, PawnExecutionKind.OrganHarvesting);
				}
				ThoughtUtility.GiveThoughtsForPawnOrganHarvested(pawn, billDoer);
			}
			if (flag2 && pawn.Faction != null && billDoer != null && billDoer.Faction != null)
			{
				Faction faction = pawn.Faction;
				Faction faction2 = billDoer.Faction;
				HistoryEventDef reason = DefDatabase<HistoryEventDef>.GetNamedSilentFail("GoodwillChangedReason_RemovedBodyPart");
				//string reason = "GoodwillChangedReason_RemovedBodyPart".Translate(part.LabelShort);
				GlobalTargetInfo? lookTarget = pawn;
				faction.TryAffectGoodwillWith(faction2, ViolationGoodwillImpact, true, true, reason, lookTarget);
			}
		}

		public override string GetLabelWhenUsedOn(Pawn pawn, BodyPartRecord part)
		{
			if (pawn.RaceProps.IsMechanoid || pawn.health.hediffSet.PartOrAnyAncestorHasDirectlyAddedParts(part))
			{
				return RecipeDefOf.RemoveBodyPart.LabelCap;
			}
			BodyPartRemovalIntent bodyPartRemovalIntent = HealthUtility.PartRemovalIntent(pawn, part);
			if (bodyPartRemovalIntent == BodyPartRemovalIntent.Harvest)
			{
				return "Harvest".Translate();
			}
			if (bodyPartRemovalIntent != BodyPartRemovalIntent.Amputate)
			{
				throw new InvalidOperationException();
			}
			if (part.depth == BodyPartDepth.Inside)
			{
				return "RemoveOrgan".Translate();
			}
			return "Amputate".Translate();
		}
	}

	public class Recipe_InstallOrReplaceBodyPart : Recipe_Surgery
	{
		public virtual bool blocked(Pawn p)
		{
			return false;
		}

		public override IEnumerable<BodyPartRecord> GetPartsToApplyOn(Pawn pawn, RecipeDef recipe)
		{
			if (!blocked(pawn))
			{
				//ModLog.Message("Recipe_InstallOrReplaceBodyPart Recipe: " + recipe.defName);

				// For all parts listed in the recipe
				for (int i = 0; i < recipe.appliedOnFixedBodyParts.Count; i++)
				{
					// Grab the recipe part
					BodyPartDef part = recipe.appliedOnFixedBodyParts[i];

					// For all parts on the pawn
					List<BodyPartRecord> bpList = pawn.RaceProps.body.AllParts;
					for (int j = 0; j < bpList.Count; j++)
					{
						// Grab the pawn part
						BodyPartRecord record = bpList[j];

						// If the recipe part and pawn part match
						if (record.def == part)
						{
							// Grab all pawn hediffs for natural and artificial parts that are on the current pawn body part
							IEnumerable<Hediff> diffs = from x in pawn.health.hediffSet.hediffs
														where x.Part == record && (x is Hediff_PartBaseNatural || x is Hediff_PartBaseArtifical)
														select x;

							//ModLog.Message("Recipe_InstallOrReplaceBodyPart GetPartsToApplyOn: Pawn=" + pawn.Name + " Part=" + record.Label + ", diffs.Count=" + diffs.Count<Hediff>() + ", First Diff=" + diffs.First<Hediff>().def.defName + " recipe.addsHediff=" + recipe.addsHediff.defName);

							// If the pawn doesn't have exactly 1 diff for that part OR the first diff found is not the one being added by the recipe
							//if (diffs.Count<Hediff>() != 1 || diffs.First<Hediff>().def != recipe.addsHediff)
							{
								//ModLog.Message("Diff Matched.  Recipe parent=" + record.parent?.Label);

								// If this is the base body OR the pawn has the parent body part of the recipe part
								if (record.parent == null || pawn.health.hediffSet.GetNotMissingParts(BodyPartHeight.Undefined, BodyPartDepth.Undefined, null, null).Contains(record.parent))
								{
									//ModLog.Message("Parent Found.  PartOrAnyAncestorHasDirectlyAddedParts=" + pawn.health.hediffSet.PartOrAnyAncestorHasDirectlyAddedParts(record) + ", HasDirectlyAddedPartFor=" + pawn.health.hediffSet.HasDirectlyAddedPartFor(record));

									if (!pawn.health.hediffSet.PartOrAnyAncestorHasDirectlyAddedParts(record) || pawn.health.hediffSet.HasDirectlyAddedPartFor(record))
									{
										//ModLog.Message("Recipe: " + recipe.defName + "Applies to: " + record.Label + " of " + pawn.Name);
										yield return record;
									}
								}
							}
						}
					}
				}
			}
		}

		public override void ApplyOnPawn(Pawn pawn, BodyPartRecord part, Pawn billDoer, List<Thing> ingredients, Bill bill)
		{
			if (billDoer != null)
			{
				if (base.CheckSurgeryFail(billDoer, pawn, ingredients, part, bill))
				{
					DamageDef surgicalCut = DamageDefOf.SurgicalCut;
					float amount = 99999f;
					float armorPenetration = 999f;
					pawn.TakeDamage(new DamageInfo(surgicalCut, amount, armorPenetration, -1f, null, part, null, DamageInfo.SourceCategory.ThingOrUnknown, null));
					return;
				}
				TaleRecorder.RecordTale(TaleDefOf.DidSurgery, new object[]
				{
					billDoer,
					pawn
				});
				MedicalRecipesUtility.RestorePartAndSpawnAllPreviousParts(pawn, part, billDoer.Position, billDoer.Map);
			}
			//pawn.health.AddHediff(recipe.addsHediff, part, null, null);

			pawn.health.AddHediff(SexPartAdder.recipePartAdder(recipe, pawn, part, ingredients), part, null, null);
		}
	}

	public class Recipe_AddBodyPart : Recipe_Surgery
	{
		public virtual bool blocked(Pawn p)
		{
			return false;
		}
		public override IEnumerable<BodyPartRecord> GetPartsToApplyOn(Pawn pawn, RecipeDef recipe)
		{
			if (!blocked(pawn))
			{
				for (int i = 0; i < recipe.appliedOnFixedBodyParts.Count; i++)
				{
					BodyPartDef part = recipe.appliedOnFixedBodyParts[i];
					List<BodyPartRecord> bpList = pawn.RaceProps.body.AllParts;
					for (int j = 0; j < bpList.Count; j++)
					{
						BodyPartRecord record = bpList[j];
						if (record.def == part)
						{
							IEnumerable<Hediff> diffs = from x in pawn.health.hediffSet.hediffs
														where x.Part == record && (x is Hediff_PartBaseNatural || x is Hediff_PartBaseArtifical)
														select x;

							// If the pawn doesn't have exactly 1 diff for that part OR the first diff found is not the one being added by the recipe
							//if (diffs.Count<Hediff>() != 1 || diffs.First<Hediff>().def != recipe.addsHediff)
							{
								if (record.parent == null || pawn.health.hediffSet.GetNotMissingParts(BodyPartHeight.Undefined, BodyPartDepth.Undefined, null, null).Contains(record.parent))
								{
									if (!pawn.health.hediffSet.PartOrAnyAncestorHasDirectlyAddedParts(record) || pawn.health.hediffSet.HasDirectlyAddedPartFor(record))
									{
										yield return record;
									}
								}
							}
						}
					}
				}
			}
		}

		public override void ApplyOnPawn(Pawn pawn, BodyPartRecord part, Pawn billDoer, List<Thing> ingredients, Bill bill)
		{
			if (billDoer != null)
			{
				if (base.CheckSurgeryFail(billDoer, pawn, ingredients, part, bill))
				{
					DamageDef surgicalCut = DamageDefOf.SurgicalCut;
					float amount = 99999f;
					float armorPenetration = 999f;
					pawn.TakeDamage(new DamageInfo(surgicalCut, amount, armorPenetration, -1f, null, part, null, DamageInfo.SourceCategory.ThingOrUnknown, null));
					return;
				}
				TaleRecorder.RecordTale(TaleDefOf.DidSurgery, new object[]
				{
					billDoer,
					pawn
				});
				//pawn.health.AddHediff(recipe.addsHediff, part, null, null);

				pawn.health.AddHediff(SexPartAdder.recipePartAdder(recipe, pawn, part, ingredients), part, null, null);
			}
		}
	}
	public class Recipe_RemovePart : Recipe_Surgery
	{
		public virtual bool blocked(Pawn p)
		{
			return false;
		}
		public override IEnumerable<BodyPartRecord> GetPartsToApplyOn(Pawn pawn, RecipeDef recipe)
		{
			if (!blocked(pawn))
			{
				for (int i = 0; i < recipe.appliedOnFixedBodyParts.Count; i++)
				{
					BodyPartDef part = recipe.appliedOnFixedBodyParts[i];
					List<BodyPartRecord> bpList = pawn.RaceProps.body.AllParts;
					for (int j = 0; j < bpList.Count; j++)
					{
						BodyPartRecord record = bpList[j];
						if (record.def == part)
						{
							IEnumerable<Hediff> diffs = from x in pawn.health.hediffSet.hediffs
														where x.Part == record && (x is Hediff_PartBaseNatural || x is Hediff_PartBaseArtifical)
														select x;

							// If the pawn doesn't have exactly 1 diff for that part OR the first diff found is not the one being added by the recipe
							//if (diffs.Count<Hediff>() != 1 || diffs.First<Hediff>().def != recipe.addsHediff)
							{
								if (record.parent == null || pawn.health.hediffSet.GetNotMissingParts(BodyPartHeight.Undefined, BodyPartDepth.Undefined, null, null).Contains(record.parent))
								{
									if (!pawn.health.hediffSet.PartOrAnyAncestorHasDirectlyAddedParts(record) || pawn.health.hediffSet.HasDirectlyAddedPartFor(record))
									{
										yield return record;
									}
								}
							}
						}
					}
				}
			}
		}

		public override void ApplyOnPawn(Pawn pawn, BodyPartRecord part, Pawn billDoer, List<Thing> ingredients, Bill bill)
		{
			if (billDoer != null)
			{
				if (base.CheckSurgeryFail(billDoer, pawn, ingredients, part, bill))
				{
					DamageDef surgicalCut = DamageDefOf.SurgicalCut;
					float amount = 99999f;
					float armorPenetration = 999f;
					pawn.TakeDamage(new DamageInfo(surgicalCut, amount, armorPenetration, -1f, null, part, null, DamageInfo.SourceCategory.ThingOrUnknown, null));
					return;
				}
				TaleRecorder.RecordTale(TaleDefOf.DidSurgery, new object[]
				{
					billDoer,
					pawn
				});
				//pawn.health.AddHediff(recipe.addsHediff, part, null, null);

				pawn.health.AddHediff(SexPartAdder.recipePartAdder(recipe, pawn, part, ingredients), part, null, null);
			}
		}
	}
}