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

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

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

Torso

				</groups>

		</value>
	</Operation>

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

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

Torso

				</groups>

		</value>
	</Operation>

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

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

Torso

				</groups>

		</value>
	</Operation>

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

				<def>Genitals</def>
				<coverage>0.02</coverage>
				<height>Bottom</height>
				<depth>Outside</depth>

		</value>
	</Operation>

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

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

		</value>
	</Operation>

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

				<def>Anus</def>
				<coverage>0.01</coverage>
				<height>Bottom</height>
				<depth>Inside</depth>

		</value>
	</Operation>

	<Operation Class="PatchOperationAdd">
		<xpath>*/HediffGiverSetDef[defName = "OrganicStandard"]/hediffGivers</xpath>
		<value>

				<hediff>DummyPrivates</hediff>
				<partsToAffect>

Genitals

				</partsToAffect>
				<canAffectAnyLivePart>false</canAffectAnyLivePart>
				<ageFractionChanceCurve>
					<points>

(0.00, 1.00)

					</points>
				</ageFractionChanceCurve>
				<averageSeverityPerDayBeforeGeneration>0.00</averageSeverityPerDayBeforeGeneration>

		</value>
	</Operation>

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

				<xpath>*/ThingDef[thingClass = "AIPawn.AIPawn"]</xpath>
				<success>Invert</success>

				<xpath>*/ThingDef[thingClass = "AIPawn.AIPawn"]/race</xpath>
				<value>
					<hediffGiverSets>

DummyPrivatesForModdedPawnsOnBirthday

					</hediffGiverSets>
				</value>

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


code:
using Verse;

namespace rjw
{
	public class config : Def
	{
		// Feature Toggles
		public bool comfort_prisoners_enabled;
		public bool colonists_can_be_comfort_prisoners;
		public bool cum_enabled;
		//public bool rape_me_sticky_enabled;
		public bool sounds_enabled;
		public bool stds_enabled;
		public bool bondage_gear_enabled;
		public bool nymph_joiners_enabled;
		//public bool whore_beds_enabled;
		public bool necro_enabled;
		public bool random_rape_enabled;
		public bool always_accept_whores;
		public bool nymphs_always_JoinInBed;
		public bool zoophis_always_rape;
		public bool rapists_always_rape;
		public bool pawns_always_do_fapping;
		public bool pawns_always_rapeCP;
		public bool whores_always_findjob;

		// Display Toggles
		public bool show_regular_dick_and_vag;

		// STD config
		public bool std_show_roll_to_catch;

		public float std_min_severity_to_pitch;
		public float std_env_pitch_cleanliness_exaggeration;
		public float std_env_pitch_dirtiness_exaggeration;
		public float std_outdoor_cleanliness;

		// Age Config
		//public int sex_free_for_all_age;
		//public int sex_minimum_age;

		public float minor_pain_threshold;	        // 0.3
		public float significant_pain_threshold;	// 0.6
		public float extreme_pain_threshold;		// 0.95
		public float base_chance_to_hit_prisoner;	// 50
		public int min_ticks_between_hits;			// 500
		public int max_ticks_between_hits;			// 700

		public float max_nymph_fraction;
		public float opp_inf_initial_immunity;
		public float comfort_prisoner_rape_mtbh_mul;
		public float whore_mtbh_mul;
		public float nymph_spawn_with_std_mul;
		//public float chance_to_rim;

		public float fertility_endAge_male;
		public float fertility_endAge_female;
	}
}

repo_name: randomtyping/rjw

license: mit


code:
//using System;
//using RimWorld;
//using UnityEngine;
//using Verse;

//namespace rjw
//{
//	//I have no idea what this shit means, I'm just reusing the comfort designator
//	public class Designator_Breed : Designator_ComfortPrisoner
//	{
//		//private static readonly MiscTranslationDef MTdef = DefDatabase<MiscTranslationDef>.GetNamed("ForBreeding");
//		public Designator_Breed()
//		{
//			//Log.Message("RJW breed designator constructor" );
//			//Log.Message("object is null " + (this ==null));
//			//Log.Message("RJW breed designator constructor" + MTdef);
//			defaultLabel = "ForBreeding".Translate();
//			defaultDesc = "ForBreedingDesc".Translate();
//			//Log.Message("RJW breed designator constructor pre icon");
//			icon = ContentFinder<Texture2D>.Get("UI/Commands/BreedingBuisiness", true);
//			// TODO: Can this be null?
//			hotKey = KeyBindingDefOf.Misc12;
//			//Log.Message("RJW breed designator constructor exit");
//		}

//		public override AcceptanceReport CanDesignateThing(Thing t)
//		{
//			if (t == null) { return false; };
//			var pawn = t as Pawn;
//			if (pawn == null) { return false; }//fuck this
//			var enabled = Mod_Settings.cross_species_breeding;
//			var marked = BreederHelper.is_designated(pawn);
//			return (enabled && !pawn.Dead && pawn.IsPrisonerOfColony && !marked && xxx.can_get_raped(pawn));
//		}
//		public override void DesignateThing(Thing t)
//		{
//			DesignationDef designation_def = BreederHelper.designationDef;

//			base.Map.designationManager.AddDesignation(new Designation(t, designation_def));
//		}
//	}
//}


code:
////This code provided the "comfort prisoner" button functionality for very long time
////Now it lays here in well-deserved rest.
////It was a good designator, its code may still be used as an example for something else
//using System;
//using RimWorld;
//using UnityEngine;
//using Verse;

//namespace rjw
//{
//	public abstract class Designator_Toggle : Command
//	{
//		public Designator_Toggle()
//		{
//			this.activateSound = SoundDefOf.SelectDesignator;
//		}

//		public Func<bool> isActive;

//		public Action toggleAction;

//		public SoundDef turnOnSound = SoundDefOf.CheckboxTurnedOn;

//		public SoundDef turnOffSound = SoundDefOf.CheckboxTurnedOff;

//		public override SoundDef CurActivateSound
//		{
//			get
//			{
//				if (this.isActive())
//				{
//					return this.turnOffSound;
//				}
//				return this.turnOnSound;
//			}
//		}

//		public override void ProcessInput(Event ev)
//		{
//			base.ProcessInput(ev);
//			this.toggleAction();
//		}

//		public override GizmoResult GizmoOnGUI(Vector2 loc)
//		{
//			GizmoResult result = base.GizmoOnGUI(loc);
//			Rect rect = new Rect(loc.x, loc.y, this.Width, 75f);
//			Rect position = new Rect(rect.x + rect.width - 24f, rect.y, 24f, 24f);
//			Texture2D image = (!this.isActive()) ? Widgets.CheckboxOffTex : Widgets.CheckboxOnTex;
//			GUI.DrawTexture(position, image);
//			return result;
//		}

//		public override bool InheritInteractionsFrom(Gizmo other)
//		{
//			Command_Toggle command_Toggle = other as Command_Toggle;
//			return command_Toggle != null && command_Toggle.isActive() == this.isActive();
//		}
//	}

//	public class Designator_ComfortPrisoner : Designator
//	{
//		private static readonly MiscTranslationDef MTdef = DefDatabase<MiscTranslationDef>.GetNamedSilentFail("DesignatorComfortPrisoner");

//		public Designator_ComfortPrisoner()
//		{
//			defaultLabel = MTdef.label;
//			defaultDesc = MTdef.description;

//			icon = ContentFinder<Texture2D>.Get("UI/Commands/comfort_prisoner_true");

//			// TODO: Can this be null?
//			hotKey = KeyBindingDefOf.Misc12;

//			// These don't matter but set them just in case
//			// soundDragSustain = SoundDefOf.DesignateDragStandard;
//			// soundDragChanged = SoundDefOf.DesignateDragStandardChanged;
//			// useMouseIcon = false;
//			// soundSucceeded = SoundDefOf.DesignateClaim;
//		}

//		public Func<bool> isActive;

//		public override GizmoResult GizmoOnGUI(Vector2 loc)
//		{
//			GizmoResult result = base.GizmoOnGUI(loc);
//			Rect rect = new Rect(loc.x, loc.y, this.Width, 75f);
//			Rect position = new Rect(rect.x + rect.width - 24f, rect.y, 24f, 24f);
//			Texture2D image = (!this.isActive()) ? Widgets.CheckboxOffTex : Widgets.CheckboxOnTex;
//			GUI.DrawTexture(position, image);
//			return result;
//		}

//		public override AcceptanceReport CanDesignateCell(IntVec3 c)
//		{
//			return false;
//		}

//		public override void DesignateSingleCell(IntVec3 c)
//		{
//		}

//		public override AcceptanceReport CanDesignateThing(Thing t)
//		{
//			var p = t as Pawn;
//			//return (p != null) && (p.IsPrisonerOfColony || p.IsColonist || p.Faction == Faction.OfPlayer) && xxx.can_get_raped(p) && (!comfort_prisoners.is_designated(p));
//			if (p != null)
//			{
//				//Log.Message("[RJW]CandDesignateThing run on" + p);
//				if (p.IsPrisonerOfColony)
//				{
//					defaultLabel = "comfort prisoner"; //TODO: adds translationdef.
//				}
//				else if (xxx.is_animal(p))
//				{
//					defaultLabel = "comfort animal";
//				}
//				else
//				{
//					defaultLabel = "comfort colonist";
//				}
//				//Log.Message("[RJW]CandDesignateThing label is " + defaultLabel);

//			}
//			return ((p != null) && (!comfort_prisoners.is_designated(p)) && ((p.IsColonist || p.Faction == Faction.OfPlayer) || (xxx.is_animal(p)) || (p.IsPrisonerOfColony))); //TODO: Rape target button?
//		}

//		public override void DesignateThing(Thing t)
//		{
//			DesignationDef designation_def = comfort_prisoners.designation_def_no_sticky;
//			if (xxx.config.rape_me_sticky_enabled)
//			{
//				designation_def = comfort_prisoners.designation_def;
//				//comfort_prisoners.designation_def = comfort_prisoners.designation_def_no_sticky;
//			}

//			base.Map.designationManager.AddDesignation(new Designation(t, designation_def));
//		}
//	}
//}


code:
//unused anymore
//using System.Collections.Generic;
//using RimWorld;
//using Verse;

//namespace rjw
//{
//	public class Recipe_InstallBreasts_Female : Recipe_InstallArtificialBodyPart
//	{
//		public override IEnumerable<BodyPartRecord> GetPartsToApplyOn(Pawn p, RecipeDef r)
//		{
//			var gen_blo = Genital_Helper.breasts_blocked(p);
//			if (p.gender == Gender.Female)
//			{
//				foreach (var part in base.GetPartsToApplyOn(p, r))
//					if ((!gen_blo) || (part != xxx.breasts))
//						yield return part;
//			}
//		}
//	}
//}


code:
//not used anymore
//using System.Collections.Generic;
//using RimWorld;
//using Verse;

//namespace rjw
//{
//	public class Recipe_InstallPrivates_Female : Recipe_InstallArtificialBodyPart
//	{
//		public override IEnumerable<BodyPartRecord> GetPartsToApplyOn(Pawn p, RecipeDef r)
//		{
//			var gen_blo = Genital_Helper.genitals_blocked(p);
//			if (p.gender == Gender.Female)
//			{
//				foreach (var part in base.GetPartsToApplyOn(p, r))
//					if ((!gen_blo) || (part != xxx.genitals))
//						yield return part;
//			}
//		}
//	}
//}


code:
//these are not used anymore
//using System.Collections.Generic;
//using RimWorld;
//using Verse;

//namespace rjw
//{
//	public class Recipe_InstallPrivates_Male : Recipe_InstallArtificialBodyPart
//	{
//		public override IEnumerable<BodyPartRecord> GetPartsToApplyOn(Pawn p, RecipeDef r)
//		{
//			var gen_blo = Genital_Helper.genitals_blocked(p);
//			if (p.gender == Gender.Male)
//			{
//				foreach (var part in base.GetPartsToApplyOn(p, r))
//					if ((!gen_blo) || (part != xxx.genitals))
//						yield return part;
//			}
//			else if (xxx.is_female(p))  //This allows futas
//			{
//				foreach (var part in base.GetPartsToApplyOn(p, r))
//					if ((!gen_blo) || (part != xxx.genitals))
//						yield return part;
//			}
//		}
//	}
//}


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

				</groups>

		</value>
	</Operation>

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

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

Torso

				</groups>

		</value>
	</Operation>

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

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

Torso

				</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

				</groups>

		</value>
	</Operation>

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

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

Torso

				</groups>

		</value>
	</Operation>

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

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

Torso

				</groups>

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


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

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

				<def>MechGenitals</def>

				<coverage>0.001</coverage>
				<depth>Inside</depth>

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

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

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

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

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


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

</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>
					<SexAbility>0.2</SexAbility>
					<Vulnerability>-0.1</Vulnerability>
				</statOffsets>
			</value>
		</nomatch>
		<match Class="PatchOperationAdd">
			<xpath>Defs/TraitDef[defName="Nimble"]/degreeDatas/li/statOffsets</xpath>
			<value>
				<SexAbility>0.2</SexAbility>
				<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:
<Patch>
	<Operation Class="PatchOperationSequence">
		<success>Always</success>
		<operations>

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

Necrophiliac

				</value>

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

Necrophiliac

				</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

		</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:
<?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>

			<targetAcquireRadius>9999</targetAcquireRadius>

		</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 = "DefendBase"]/thinkNode/subNodes/li[@Class="ThinkNode_ForbidOutsideFlagRadius"]/subNodes/li[@Class="ThinkNode_Subtree"]</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>

	<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:
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:
And why would you read me?

You can support current Dev(Me) here: https://www.patreon.com/Ed86

Mod home page:
https://www.loverslab.com/files/file/7257-rimjobworld-200/

Discord:
https://discord.gg/CXwHhv8

Requirements:
Hugslib ([Steam](https://steamcommunity.com/sharedfiles/filedetails/?id=818773962)) ([GitHub](https://github.com/UnlimitedHugs/RimworldHugsLib))

Installation:
(if updating - Delete all files from previous RJW versions)
Unpack the the content from the .7z into "...steam/steamapps/common/rimworld/mods/RJW", you will see RimJobWorld.Main.csproj
Start Game
Activate mod & the other required mods
Restart game

Load Order:
-Rimworld Core (that's the game)
--Hugslib
---your mods
--RimJobWorld
---addons for RimJobWorld

Contibuting:
use TABS not SPACES for xml/cs, please?
do comments in code for other people

P.S.
im not a pro C# programmer or git user, so i might do weird stuff ;)


code:
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProjectGuid>{22F82FFF-8BD4-4CEE-9F22-C7DA71281E72}</ProjectGuid>
    <OutputType>Library</OutputType>
    <NoStandardLibraries>false</NoStandardLibraries>
    <AssemblyName>RJW</AssemblyName>
    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
    <FileAlignment>512</FileAlignment>
    <TargetFrameworkProfile />
    <ShouldCreateLogs>True</ShouldCreateLogs>
    <AdvancedSettingsExpanded>True</AdvancedSettingsExpanded>
    <UpdateAssemblyVersion>True</UpdateAssemblyVersion>
    <UpdateAssemblyFileVersion>True</UpdateAssemblyFileVersion>
    <UpdateAssemblyInfoVersion>True</UpdateAssemblyInfoVersion>
    <AssemblyVersionSettings>None.None.IncrementOnDemand.Increment</AssemblyVersionSettings>
    <AssemblyFileVersionSettings>None.None.IncrementOnDemand.None</AssemblyFileVersionSettings>
    <AssemblyInfoVersionSettings>None.None.IncrementOnDemand.None</AssemblyInfoVersionSettings>
    <PrimaryVersionType>AssemblyVersionAttribute</PrimaryVersionType>
    <AssemblyVersion>1.6.0.493</AssemblyVersion>
  </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>
    <FileAlignment>4096</FileAlignment>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <DebugType>none</DebugType>
    <Optimize>true</Optimize>
    <OutputPath>Assemblies\</OutputPath>
    <DefineConstants>TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
    <LangVersion>latest</LangVersion>
  </PropertyGroup>
  <PropertyGroup>
    <RootNamespace>rjw</RootNamespace>
  </PropertyGroup>
  <ItemGroup>
    <Compile Include="Source\Harmony\patch_races.cs" />
    <Compile Include="Source\Harmony\patch_ui_hero.cs" />
    <Compile Include="Source\Harmony\patch_ui_rjw_buttons.cs" />
    <Compile Include="Source\JobDrivers\JobDriver_Sex.cs" />
    <Compile Include="Source\Modules\Bondage\bondage_gear.cs" />
    <Compile Include="Source\Common\Breeder_Helper.cs" />
    <Compile Include="Source\Modules\Multiplayer\Multiplayer.cs" />
    <Compile Include="Source\Modules\SemenOverlay\BukkakeContent.cs" />
    <Compile Include="Source\Common\config.cs" />
    <Compile Include="Source\Common\CORE_EXPOSED\CORE_EXPOSED.cs" />
    <Compile Include="Source\Common\DataStore.cs" />
    <Compile Include="Source\Common\Gender_Helper.cs" />
    <Compile Include="Source\Common\Genital_Helper.cs" />
    <Compile Include="Source\Common\MapCom_Injector.cs" />
    <Compile Include="Source\Common\MiscTranslationDef.cs" />
    <Compile Include="Source\Common\PartsData.cs" />
    <Compile Include="Source\Common\PawnData.cs" />
    <Compile Include="Source\Common\CORE_EXPOSED\PawnGenerator.cs" />
    <Compile Include="Source\Modules\Pregnancy\Pregnancy_Helper.cs" />
    <Compile Include="Source\Modules\SemenOverlay\SemenHelper.cs" />
    <Compile Include="Source\Common\SexUtility.cs" />
    <Compile Include="Source\Modules\STD\std.cs" />
    <Compile Include="Source\Common\StringListDef.cs" />
    <Compile Include="Source\Common\Unprivater.cs" />
    <Compile Include="Source\Modules\Whoring\Whoring_Helper.cs" />
    <Compile Include="Source\Common\xxx.cs" />
    <Compile Include="Source\Comps\CompAdder.cs" />
    <Compile Include="Source\Modules\Bondage\Comps\CompBondageGear.cs" />
    <Compile Include="Source\Modules\Bondage\Comps\CompGetBondageGear.cs" />
    <Compile Include="Source\Modules\Bondage\Comps\CompHoloCryptoStamped.cs" />
    <Compile Include="Source\Comps\CompProperties_RJW.cs" />
    <Compile Include="Source\Comps\CompRJW.cs" />
    <Compile Include="Source\Modules\Bondage\Comps\CompStampedApparelKey.cs" />
    <Compile Include="Source\Modules\Bondage\Comps\CompUnlockBondageGear.cs" />
    <Compile Include="Source\Modules\SemenOverlay\DefOf\RJW_HediffDefOf.cs" />
    <Compile Include="Source\Modules\SemenOverlay\DefOf\RJW_JobDefOf.cs" />
    <Compile Include="Source\Designators\RJWdesignations.cs" />
    <Compile Include="Source\Harmony\CnPcompatibility.cs" />
    <Compile Include="Source\Harmony\First.cs" />
    <Compile Include="Source\Harmony\patch_ABF.cs" />
    <Compile Include="Source\Harmony\patch_backstory_generator.cs" />
    <Compile Include="Source\Harmony\patch_bondage_gear.cs" />
    <Compile Include="Source\Harmony\patch_DubsBadHygiene.cs" />
    <Compile Include="Source\Harmony\patch_lovin.cs" />
    <Compile Include="Source\Harmony\patch_pregnancy.cs" />
    <Compile Include="Source\Harmony\patch_semenOverlay.cs" />
    <Compile Include="Source\Harmony\SexualityCard.cs" />
    <Compile Include="Source\Harmony\SexualityCardInternal.cs" />
    <Compile Include="Source\Hediffs\HediffComp_SeverityPerDayIfRest.cs" />
    <Compile Include="Source\Modules\SemenOverlay\Hediffs\Hediff_Bukkake.cs" />
    <Compile Include="Source\Hediffs\Hediff_Cocoon.cs" />
    <Compile Include="Source\Modules\SemenOverlay\Hediffs\Hediff_Semen.cs" />
    <Compile Include="Source\Modules\Pregnancy\Hediffs\HediffDef_EnemyImplants.cs" />
    <Compile Include="Source\Hediffs\Hediff_ID.cs" />
    <Compile Include="Source\Modules\Pregnancy\Hediffs\Hediff_InsectEggPregnancy.cs" />
    <Compile Include="Source\Hediffs\Hediff_InvisibleImplant.cs" />
    <Compile Include="Source\Modules\Pregnancy\Hediffs\Hediff_MCEvents.cs" />
    <Compile Include="Source\Modules\Pregnancy\Hediffs\Hediff_MechanoidPregnancy.cs" />
    <Compile Include="Source\Modules\Pregnancy\Hediffs\Hediff_MechImplants.cs" />
    <Compile Include="Source\Modules\Pregnancy\Hediffs\HeDiff_MicroComputer.cs" />
    <Compile Include="Source\Modules\Pregnancy\Hediffs\Hediff_ParasitePregnancy.cs" />
    <Compile Include="Source\Hediffs\Hediff_Submitting.cs" />
    <Compile Include="Source\Modules\Pregnancy\Hediffs\Hediff_BasePregnancy.cs" />
    <Compile Include="Source\Modules\Pregnancy\Hediffs\Hediff_BestialPregnancy.cs" />
    <Compile Include="Source\Modules\Pregnancy\Hediffs\Hediff_HumanlikePregnancy.cs" />
    <Compile Include="Source\Modules\Pregnancy\Hediffs\Hediff_SimpleBaby.cs" />
    <Compile Include="Source\Modules\Nymphs\Incidents\IncidentWorker_NymphJoins.cs" />
    <Compile Include="Source\Modules\Nymphs\Incidents\IncidentWorker_NymphVisitorGroup.cs" />
    <Compile Include="Source\Modules\Nymphs\Incidents\IncidentWorker_TestInc.cs" />
    <Compile Include="Source\Modules\Nymphs\Incidents\IncidentWorker_TestInc2.cs" />
    <Compile Include="Source\Interactions\InteractionWorker_SexAttempt.cs" />
    <Compile Include="Source\JobDrivers\JobDriver_BestialityForMale.cs" />
    <Compile Include="Source\JobDrivers\JobDriver_BestialityForFemale.cs" />
    <Compile Include="Source\JobDrivers\JobDriver_Breeding.cs" />
    <Compile Include="Source\Modules\SemenOverlay\JobDrivers\JobDriver_CleanSelf.cs" />
    <Compile Include="Source\JobDrivers\JobDriver_Fappin.cs" />
    <Compile Include="Source\JobDrivers\JobDriver_GettinLoved.cs" />
    <Compile Include="Source\JobDrivers\JobDriver_GettinRaped.cs" />
    <Compile Include="Source\JobDrivers\JobDriver_JoinInBed.cs" />
    <Compile Include="Source\JobDrivers\JobDriver_QuickFap.cs" />
    <Compile Include="Source\JobDrivers\JobDriver_RapeEnemyByHumanlike.cs" />
    <Compile Include="Source\Modules\Whoring\JobDrivers\JobDriver_WhoreInvitingVisitors.cs" />
    <Compile Include="Source\JobDrivers\JobDriver_PrisonerComfortRapin.cs" />
    <Compile Include="Source\JobDrivers\JobDriver_RandomRape.cs" />
    <Compile Include="Source\JobDrivers\JobDriver_Rape.cs" />
    <Compile Include="Source\JobDrivers\JobDriver_RapeEnemy.cs" />
    <Compile Include="Source\JobDrivers\JobDriver_RapeEnemyByAnimal.cs" />
    <Compile Include="Source\JobDrivers\JobDriver_RapeEnemyByInsect.cs" />
    <Compile Include="Source\JobDrivers\JobDriver_RapeEnemyByMech.cs" />
    <Compile Include="Source\JobDrivers\JobDriver_RapeEnemyToParasite.cs" />
    <Compile Include="Source\Modules\Bondage\JobDrivers\JobDriver_StruggleInBondageGear.cs" />
    <Compile Include="Source\Modules\Bondage\JobDrivers\JobDriver_UseItemOn.cs" />
    <Compile Include="Source\JobDrivers\JobDriver_ViolateCorpse.cs" />
    <Compile Include="Source\Modules\Whoring\JobDrivers\JobDriver_WhoreIsServingVisitors.cs" />
    <Compile Include="Source\JobGivers\JobGiver_AIRapePrisoner.cs" />
    <Compile Include="Source\JobGivers\JobGiver_Bestiality.cs" />
    <Compile Include="Source\JobGivers\JobGiver_Breed.cs" />
    <Compile Include="Source\JobGivers\JobGiver_ComfortPrisonerRape.cs" />
    <Compile Include="Source\JobGivers\JobGiver_DoFappin.cs" />
    <Compile Include="Source\JobGivers\JobGiver_JoinInBed.cs" />
    <Compile Include="Source\JobGivers\JobGiver_RandomRape.cs" />
    <Compile Include="Source\JobGivers\JobGiver_RapeEnemy.cs" />
    <Compile Include="Source\JobGivers\JobGiver_ViolateCorpse.cs" />
    <Compile Include="Source\Modules\Whoring\JobGivers\JobGiver_WhoreInvitingVisitors.cs" />
    <Compile Include="Source\MentalStates\MentalState_RandomRape.cs" />
    <Compile Include="Source\MentalStates\SexualMentalState.cs" />
    <Compile Include="Source\Needs\Need_Sex.cs" />
    <Compile Include="Source\PawnCapacities\BodyPartTagDefOf.cs" />
    <Compile Include="Source\PawnCapacities\PawnCapacityWorker_Fertility.cs" />
    <Compile Include="Source\Modules\Nymphs\Pawns\Nymph_Backstories.cs" />
    <Compile Include="Source\Modules\Nymphs\Pawns\Nymph_Generator.cs" />
    <Compile Include="Source\Recipes\Install_Part\Recipe_InstallPart.cs" />
    <Compile Include="Source\Modules\Pregnancy\Recipes\Recipe_Abortion.cs" />
    <Compile Include="Source\Modules\Bondage\Recipes\Recipe_ChastityBelt.cs" />
    <Compile Include="Source\Modules\Pregnancy\Recipes\Recipe_ClaimChild.cs" />
    <Compile Include="Source\Modules\Pregnancy\Recipes\Recipe_DeterminePregnancy.cs" />
    <Compile Include="Source\Modules\Bondage\Recipes\Recipe_ForceOffGear.cs" />
    <Compile Include="Source\Modules\Pregnancy\Recipes\Recipe_InstallIUD.cs" />
    <Compile Include="Source\Modules\Pregnancy\Recipes\Recipe_PregnancyHackMech.cs" />
    <Compile Include="Source\Modules\Pregnancy\Recipes\Recipe_Sterilize.cs" />
    <Compile Include="Source\Recipes\Recipe_Restraints.cs" />
    <Compile Include="Source\Recipes\Remove_Part\Recipe_RemoveAnus.cs" />
    <Compile Include="Source\Recipes\Remove_Part\Recipe_RemoveBreasts.cs" />
    <Compile Include="Source\Recipes\Remove_Part\Recipe_RemoveGenitals.cs" />
    <Compile Include="Source\Recipes\Remove_Part\Recipe_RemovePart.cs" />
    <Compile Include="Source\Recipes\Transgender\Recipe_MakeFuta.cs" />
    <Compile Include="Source\Recipes\Transgender\Recipe_MakeFutaF.cs" />
    <Compile Include="Source\Recipes\Transgender\Recipe_MakeFutaM.cs" />
    <Compile Include="Source\Settings\RJWDebugSettings.cs" />
    <Compile Include="Source\Settings\RJWPregnancySettings.cs" />
    <Compile Include="Source\Settings\RJWHookupSettings.cs" />
    <Compile Include="Source\Settings\RJWSettings.cs" />
    <Compile Include="Source\Settings\RJWSettingsController.cs" />
    <Compile Include="Source\Settings\RJWSexSettings.cs" />
    <Compile Include="Source\ThinkTreeNodes\ThinkNode_ChancePerHour_Bestiality.cs" />
    <Compile Include="Source\ThinkTreeNodes\ThinkNode_ChancePerHour_Breed.cs" />
    <Compile Include="Source\ThinkTreeNodes\ThinkNode_ChancePerHour_Fappin.cs" />
    <Compile Include="Source\ThinkTreeNodes\ThinkNode_ChancePerHour_Necro.cs" />
    <Compile Include="Source\ThinkTreeNodes\ThinkNode_ChancePerHour_RapeCP.cs" />
    <Compile Include="Source\ThinkTreeNodes\ThinkNode_ConditionalBestiality.cs" />
    <Compile Include="Source\ThinkTreeNodes\ThinkNode_ConditionalCanBreed.cs" />
    <Compile Include="Source\ThinkTreeNodes\ThinkNode_ConditionalCanRapeCP.cs" />
    <Compile Include="Source\ThinkTreeNodes\ThinkNode_ConditionalFrustrated.cs" />
    <Compile Include="Source\ThinkTreeNodes\ThinkNode_ConditionalHorny.cs" />
    <Compile Include="Source\ThinkTreeNodes\ThinkNode_ConditionalNecro.cs" />
    <Compile Include="Source\ThinkTreeNodes\ThinkNode_ConditionalNympho.cs" />
    <Compile Include="Source\ThinkTreeNodes\ThinkNode_ConditionalRapist.cs" />
    <Compile Include="Source\ThinkTreeNodes\ThinkNode_ConditionalSexChecks.cs" />
    <Compile Include="Source\Modules\Whoring\ThinkTreeNodes\ThinkNode_ConditionalWhore.cs" />
    <Compile Include="Source\Modules\Bondage\Thoughts\ThoughtWorker_Bound.cs" />
    <Compile Include="Source\Thoughts\ThoughtWorker_FeelingBroken.cs" />
    <Compile Include="Source\Modules\STD\Thoughts\ThoughtWorker_ItchyCrotch.cs" />
    <Compile Include="Source\Thoughts\ThoughtWorker_NeedSex.cs" />
    <Compile Include="Source\Thoughts\ThoughtWorker_SexChange.cs" />
    <Compile Include="Source\Modules\STD\Thoughts\ThoughtWorker_SyphiliticThoughts.cs" />
    <Compile Include="Source\Modules\STD\Thoughts\ThoughtWorker_WastingAway.cs" />
    <Compile Include="Source\Modules\Whoring\Thoughts\ThoughtWorker_Whore.cs" />
    <Compile Include="Source\Triggers\Trigger_SexSatisfy.cs" />
    <Compile Include="Source\WorkGivers\WorkGiver_BestialityForFemale.cs" />
    <Compile Include="Source\WorkGivers\WorkGiver_BestialityForMale.cs" />
    <Compile Include="Source\Modules\SemenOverlay\WorkGivers\WorkGiver_CleanSelf.cs" />
    <Compile Include="Source\WorkGivers\WorkGiver_Fap.cs" />
    <Compile Include="Source\WorkGivers\WorkGiver_Fap_Bed.cs" />
    <Compile Include="Source\WorkGivers\WorkGiver_Rape.cs" />
    <Compile Include="Source\WorkGivers\WorkGiver_RapeCP.cs" />
    <Compile Include="Source\WorkGivers\WorkGiver_RapeEnemy.cs" />
    <Compile Include="Source\WorkGivers\WorkGiver_Sex.cs" />
    <Compile Include="Source\WorkGivers\WorkGiver_Sexchecks.cs" />
    <Compile Include="Source\WorkGivers\WorkGiver_ViolateCorpse.cs" />
    <Content Include=".gitattributes" />
    <Content Include=".gitignore" />
    <Content Include="About\About.xml">
      <SubType>Designer</SubType>
    </Content>
    <Content Include="About\Manifest.xml" />
    <Content Include="About\ModSync.xml" />
    <Content Include="About\Preview.png" />
    <Content Include="Assemblies\%24HugsLibChecker.dll" />
    <Content Include="Assemblies\0Harmony.dll" />
    <Content Include="Assemblies\0MultiplayerAPI.dll" />
    <Content Include="Assemblies\RJW.dll" />
    <Compile Include="Source\Settings\Settings.cs" />
    <Content Include="Defs\BodyPartDefs\BodyParts_Humanlike.xml">
      <SubType>Designer</SubType>
    </Content>
    <Content Include="Defs\BodyPartDefs\BodyParts_Mech.xml" />
    <Content Include="Defs\BodyPartTagDefs\BodyPartTags_FertilitySource.xml">
      <SubType>Designer</SubType>
    </Content>
    <Content Include="Defs\ConceptDefs\Concepts_WhoreBeds.xml" />
    <Content Include="Defs\DamageDefs\Damage_Viral.xml" />
    <Content Include="Defs\HediffDefs\Hediffs_Bondage.xml" />
    <Content Include="Defs\HediffDefs\Hediffs_Bukkake.xml" />
    <Content Include="Defs\HediffDefs\Hediffs_EnemyImplants.xml">
      <SubType>Designer</SubType>
    </Content>
    <Content Include="Defs\HediffDefs\Hediffs_FeelingBroken.xml">
      <SubType>Designer</SubType>
    </Content>
    <Content Include="Defs\HediffDefs\Hediffs_Fertility.xml" />
    <Content Include="Defs\HediffDefs\Hediffs_MCEvents.xml" />
    <Content Include="Defs\HediffDefs\Hediffs_Other.xml" />
    <Content Include="Defs\HediffDefs\Hediffs_Pregnancy.xml">
      <SubType>Designer</SubType>
    </Content>
    <Content Include="Defs\HediffDefs\Hediffs_PrivateParts\Hediffs_PrivateParts.xml" />
    <Content Include="Defs\HediffDefs\Hediffs_PrivateParts\Hediffs_PrivateParts_Animal.xml" />
    <Content Include="Defs\HediffDefs\Hediffs_PrivateParts\Hediffs_PrivateParts_Demon.xml" />
    <Content Include="Defs\HediffDefs\Hediffs_PrivateParts\Hediffs_PrivateParts_Human.xml" />
    <Content Include="Defs\HediffDefs\Hediffs_PrivateParts\Hediffs_PrivateParts_Implants.xml" />
    <Content Include="Defs\HediffDefs\Hediffs_PrivateParts\Hediffs_PrivateParts_Insect.xml" />
    <Content Include="Defs\HediffDefs\Hediffs_PrivateParts\Hediffs_PrivateParts_Slime.xml" />
    <Content Include="Defs\HediffDefs\Hediffs_SimpleBaby.xml" />
    <Content Include="Defs\HediffDefs\Hediffs_STDs.xml" />
    <Content Include="Defs\HediffDefs\Hediffs_Sterilized.xml" />
    <Content Include="Defs\HediffDefs\Hediffs_Submitting.xml" />
    <Content Include="Defs\HediffDefs\Hediffs_Transgender.xml">
      <SubType>Designer</SubType>
    </Content>
    <Content Include="Defs\IncidentDef\Incidents_Nymph.xml" />
    <Content Include="Defs\IncidentDef\Incidents_Testing.xml" />
    <Content Include="Defs\InteractionDef\Interactions_Breed.xml" />
    <Content Include="Defs\InteractionDef\Interactions_Oral.xml" />
    <Content Include="Defs\InteractionDef\Interactions_Rape.xml" />
    <Content Include="Defs\InteractionDef\Interactions_Sex.xml" />
    <Content Include="Defs\JobDefs\Jobs_Bestiality.xml">
      <SubType>Designer</SubType>
    </Content>
    <Content Include="Defs\JobDefs\Jobs_Bondage.xml">
      <SubType>Designer</SubType>
    </Content>
    <Content Include="Defs\JobDefs\Jobs_Bukkake.xml" />
    <Content Include="Defs\JobDefs\Jobs_CasualSex.xml" />
    <Content Include="Defs\JobDefs\Jobs_Misc.xml">
      <SubType>Designer</SubType>
    </Content>
    <Content Include="Defs\JobDefs\Jobs_Necrophile.xml">
      <SubType>Designer</SubType>
    </Content>
    <Content Include="Defs\JobDefs\Jobs_Rapist.xml">
      <SubType>Designer</SubType>
    </Content>
    <Content Include="Defs\JobDefs\Jobs_Whore.xml">
      <SubType>Designer</SubType>
    </Content>
    <Content Include="Defs\MentalStateDefs\MentalStates.xml">
      <SubType>Designer</SubType>
    </Content>
    <Content Include="Defs\MiscTranslationDef\MiscTranslationDefs.xml" />
    <Content Include="Defs\ModRacesParts.xml">
      <SubType>Designer</SubType>
    </Content>
    <Content Include="Defs\NeedDefs\Needs_Sex.xml" />
    <Content Include="Defs\NonInheritedTraits.xml" />
    <Content Include="Defs\PawnCapacityDefs\PawnCapacity_Fertility.xml" />
    <Content Include="Defs\PawnKindDefs\PawnKind_Nymph.xml" />
    <Content Include="Defs\PawnRelationDef\PawnRelations_Beast.xml">
      <SubType>Designer</SubType>
    </Content>
    <Content Include="Defs\races_db.xml">
      <SubType>Designer</SubType>
    </Content>
    <Content Include="Defs\Race_filter.xml" />
    <Content Include="Defs\RecipeDefs\Recipes_Abortion.xml" />
    <Content Include="Defs\RecipeDefs\Recipes_MakeBondageGear.xml" />
    <Content Include="Defs\RecipeDefs\Recipes_ClaimChild.xml">
      <SubType>Designer</SubType>
    </Content>
    <Content Include="Defs\RecipeDefs\Recipes_ForceRemoveBondage.xml" />
    <Content Include="Defs\RecipeDefs\Recipes_MakeProsthetics.xml" />
    <Content Include="Defs\RecipeDefs\Recipes_RemoveEnemyImplants.xml" />
    <Content Include="Defs\RecipeDefs\Recipes_Surgery.xml">
      <SubType>Designer</SubType>
    </Content>
    <Content Include="Defs\RecipeDefs\Recipes_Surgery_Futa_Female.xml" />
    <Content Include="Defs\RecipeDefs\Recipes_Surgery_Misc.xml" />
    <Content Include="Defs\RecipeDefs\Recipes_Surgery_Remove_Parts.xml" />
    <Content Include="Defs\RecipeDefs\Recipe_DeterminePregnancy.xml" />
    <Content Include="Defs\RecordDefs\Records.xml" />
    <Content Include="Defs\RulePackDefs\RulePacks_Breeding.xml" />
    <Content Include="Defs\RulePackDefs\RulePacks_EngravedNames.xml" />
    <Content Include="Defs\RulePackDefs\RulePacks_Oral.xml" />
    <Content Include="Defs\RulePackDefs\RulePacks_Rape.xml" />
    <Content Include="Defs\RulePackDefs\RulePacks_Sex.xml" />
    <Content Include="Defs\RulePackDefs\RulePacks_TalkTopics_Sex.xml" />
    <Content Include="Defs\SoundDefs\Sounds_Sex.xml" />
    <Content Include="Defs\SpecialBackstories.xml" />
    <Content Include="Defs\StatDefs\Stats.xml" />
    <Content Include="Defs\STDDefs\STDs.xml" />
    <Content Include="Defs\ThingDefs\Drugs.xml" />
    <Content Include="Defs\ThingDefs\Filth_Cum.xml">
      <SubType>Designer</SubType>
    </Content>
    <Content Include="Defs\ThingDefs\Items_BodyParts\Items_BodyParts.xml" />
    <Content Include="Defs\ThingDefs\Items_BodyParts\Items_BodyParts_Animal.xml" />
    <Content Include="Defs\ThingDefs\Items_BodyParts\Items_BodyParts_Demon.xml" />
    <Content Include="Defs\ThingDefs\Items_BodyParts\Items_BodyParts_Human.xml" />
    <Content Include="Defs\ThingDefs\Items_BodyParts\Items_BodyParts_Implants.xml" />
    <Content Include="Defs\ThingDefs\Items_BodyParts\Items_BodyParts_Insect.xml" />
    <Content Include="Defs\ThingDefs\Items_BodyParts\Items_BodyParts_Slime.xml" />
    <Content Include="Defs\ThingDefs\Items_Bondage.xml" />
    <Content Include="Defs\ThingDefs\Items_WhoreBeds.xml">
      <SubType>Designer</SubType>
    </Content>
    <Content Include="Defs\ThingDefs\Motes.xml" />
    <Content Include="Defs\ThinkTreeDefs\ThinkTrees_Animal.xml" />
    <Content Include="Defs\ThinkTreeDefs\ThinkTrees_Misc.xml">
      <SubType>Designer</SubType>
    </Content>
    <Content Include="Defs\ThinkTreeDefs\ThinkTrees_Necrophile.xml">
      <SubType>Designer</SubType>
    </Content>
    <Content Include="Defs\ThinkTreeDefs\ThinkTrees_Nymph.xml">
      <SubType>Designer</SubType>
    </Content>
    <Content Include="Defs\ThinkTreeDefs\ThinkTrees_Prisoner.xml">
      <SubType>Designer</SubType>
    </Content>
    <Content Include="Defs\ThinkTreeDefs\ThinkTrees_Rapist.xml" />
    <Content Include="Defs\ThinkTreeDefs\ThinkTrees_Whore.xml">
      <SubType>Designer</SubType>
    </Content>
    <Content Include="Defs\ThinkTreeDefs\ThinkTrees_Zoophile.xml">
      <SubType>Designer</SubType>
    </Content>
    <Content Include="Defs\ThoughtDefs\Thoughts_Bestiality.xml">
      <SubType>Designer</SubType>
    </Content>
    <Content Include="Defs\ThoughtDefs\Thoughts_Bondage.xml" />
    <Content Include="Defs\ThoughtDefs\Thoughts_Family.xml">
      <SubType>Designer</SubType>
    </Content>
    <Content Include="Defs\ThoughtDefs\Thoughts_Necrophile.xml">
      <SubType>Designer</SubType>
    </Content>
    <Content Include="Defs\ThoughtDefs\Thoughts_Rape.xml">
      <SubType>Designer</SubType>
    </Content>
    <Content Include="Defs\ThoughtDefs\Thoughts_Sex.xml">
      <SubType>Designer</SubType>
    </Content>
    <Content Include="Defs\ThoughtDefs\Thoughts_SexChange.xml">
      <SubType>Designer</SubType>
    </Content>
    <Content Include="Defs\ThoughtDefs\Thoughts_STD.xml">
      <SubType>Designer</SubType>
    </Content>
    <Content Include="Defs\ThoughtDefs\Thoughts_Virgin.xml">
      <SubType>Designer</SubType>
    </Content>
    <Content Include="Defs\ThoughtDefs\Thoughts_Whore.xml">
      <SubType>Designer</SubType>
    </Content>
    <Content Include="Defs\TraitDefs\Traits.xml" />
    <Content Include="Defs\WorkGiverDefs\WorkGivers_Bukkake.xml" />
    <Content Include="Defs\WorkGiverDefs\WorkGivers_Sex.xml" />
    <Content Include="Defs\_config.xml">
      <SubType>Designer</SubType>
    </Content>
    <Content Include="Languages\English\Keyed\RimJobWorld.xml">
      <SubType>Designer</SubType>
    </Content>
    <Content Include="Languages\English\Strings\Words\Nouns\TalkTopics_Sexual.txt" />
    <Content Include="Patches\BodyParts_All.xml" />
    <Content Include="Patches\BodyParts_Humanoid.xml" />
    <Content Include="Patches\BodyParts_Mechanoid.xml" />
    <Content Include="Patches\CnP_compatibility.xml">
      <SubType>Designer</SubType>
    </Content>
    <Content Include="Patches\ModdedTraits_compatibility.xml" />
    <Content Include="Patches\Necro_Thought_patch.xml" />
    <Content Include="Patches\Races_Humanlike_Patch.xml" />
    <Content Include="Patches\Recipes_Animals_Patch.xml" />
    <Content Include="Patches\TalkTopicsPatch_Sexual.xml" />
    <Content Include="Patches\Tweak_Duty.xml">
      <SubType>Designer</SubType>
    </Content>
    <Content Include="Sounds\Sex\cum.wav" />
    <Content Include="Sounds\Sex\kucyu04.wav" />
    <Content Include="Textures\Bukkake\SemenIcon_drenched.png" />
    <Content Include="Textures\Bukkake\SemenIcon_dripping.png" />
    <Content Include="Textures\Bukkake\SemenIcon_little.png" />
    <Content Include="Textures\Bukkake\SemenIcon_some.png" />
    <Content Include="Textures\Bukkake\splatch_1.png" />
    <Content Include="Textures\Bukkake\splatch_2.png" />
    <Content Include="Textures\Bukkake\splatch_3.png" />
    <Content Include="Textures\Bukkake\splatch_4.png" />
    <Content Include="Textures\Bukkake\splatch_5.png" />
    <Content Include="Textures\Bukkake\splatch_6.png" />
    <Content Include="Textures\Bukkake\splatch_7.png" />
    <Content Include="Textures\Bukkake\splatch_8.png" />
    <Content Include="Textures\Bukkake\splatch_9.png" />
    <Content Include="Textures\Things\Building\Furniture\Bed\BedWhore_east.png" />
    <Content Include="Textures\Things\Building\Furniture\Bed\BedWhore_eastm.png" />
    <Content Include="Textures\Things\Building\Furniture\Bed\BedWhore_north.png" />
    <Content Include="Textures\Things\Building\Furniture\Bed\BedWhore_northm.png" />
    <Content Include="Textures\Things\Building\Furniture\Bed\BedWhore_south.png" />
    <Content Include="Textures\Things\Building\Furniture\Bed\BedWhore_southm.png" />
    <Content Include="Textures\Things\Building\Furniture\Bed\DoubleBedWhore_east.png" />
    <Content Include="Textures\Things\Building\Furniture\Bed\DoubleBedWhore_eastm.png" />
    <Content Include="Textures\Things\Building\Furniture\Bed\DoubleBedWhore_north.png" />
    <Content Include="Textures\Things\Building\Furniture\Bed\DoubleBedWhore_northm.png" />
    <Content Include="Textures\Things\Building\Furniture\Bed\DoubleBedWhore_south.png" />
    <Content Include="Textures\Things\Building\Furniture\Bed\DoubleBedWhore_southm.png" />
    <Content Include="Textures\Things\Building\Furniture\Bed\RoyalBedWhore_east.png" />
    <Content Include="Textures\Things\Building\Furniture\Bed\RoyalBedWhore_eastm.png" />
    <Content Include="Textures\Things\Building\Furniture\Bed\RoyalBedWhore_north.png" />
    <Content Include="Textures\Things\Building\Furniture\Bed\RoyalBedWhore_northm.png" />
    <Content Include="Textures\Things\Building\Furniture\Bed\RoyalBedWhore_south.png" />
    <Content Include="Textures\Things\Building\Furniture\Bed\RoyalBedWhore_southm.png" />
    <Content Include="Textures\Things\Building\Furniture\Bed\WhoreSleepSpot_east.png" />
    <Content Include="Textures\Things\Building\Furniture\Bed\WhoreSleepSpot_north.png" />
    <Content Include="Textures\Things\Building\Furniture\Bed\WhoreSleepSpot_south.png" />
    <Content Include="Textures\Things\Item\Humpshroom\Humpshroom.png" />
    <Content Include="Textures\Things\Item\Humpshroom\HumpshroomCollected.png" />
    <Content Include="Textures\Things\Item\Parts\anus.png" />
    <Content Include="Textures\Things\Item\Parts\anus_artificial.png" />
    <Content Include="Textures\Things\Item\Parts\breast.png" />
    <Content Include="Textures\Things\Item\Parts\breast_artificial.png" />
    <Content Include="Textures\Things\Item\Parts\genital_female.png" />
    <Content Include="Textures\Things\Item\Parts\genital_female_artificial.png" />
    <Content Include="Textures\Things\Item\Parts\genital_male.png" />
    <Content Include="Textures\Things\Item\Parts\genital_male_artificial.png" />
    <Content Include="Textures\Things\Item\Parts\placeholder_part.png" />
    <Content Include="Textures\Things\Item\Parts\slime.png" />
    <Content Include="Textures\Things\Pawn\Humanlike\Apparel\Bondage\Armbinder\armbinder.png" />
    <Content Include="Textures\Things\Pawn\Humanlike\Apparel\Bondage\Armbinder\Armbinder_Fat_east.png" />
    <Content Include="Textures\Things\Pawn\Humanlike\Apparel\Bondage\Armbinder\Armbinder_Fat_north.png" />
    <Content Include="Textures\Things\Pawn\Humanlike\Apparel\Bondage\Armbinder\Armbinder_Fat_south.png" />
    <Content Include="Textures\Things\Pawn\Humanlike\Apparel\Bondage\Armbinder\Armbinder_Female_east.png" />
    <Content Include="Textures\Things\Pawn\Humanlike\Apparel\Bondage\Armbinder\Armbinder_Female_north.png" />
    <Content Include="Textures\Things\Pawn\Humanlike\Apparel\Bondage\Armbinder\Armbinder_Female_south.png" />
    <Content Include="Textures\Things\Pawn\Humanlike\Apparel\Bondage\Armbinder\Armbinder_Hulk_east.png" />
    <Content Include="Textures\Things\Pawn\Humanlike\Apparel\Bondage\Armbinder\Armbinder_Hulk_north.png" />
    <Content Include="Textures\Things\Pawn\Humanlike\Apparel\Bondage\Armbinder\Armbinder_Hulk_south.png" />
    <Content Include="Textures\Things\Pawn\Humanlike\Apparel\Bondage\Armbinder\Armbinder_Male_east.png" />
    <Content Include="Textures\Things\Pawn\Humanlike\Apparel\Bondage\Armbinder\Armbinder_Male_north.png" />
    <Content Include="Textures\Things\Pawn\Humanlike\Apparel\Bondage\Armbinder\Armbinder_Male_south.png" />
    <Content Include="Textures\Things\Pawn\Humanlike\Apparel\Bondage\Armbinder\Armbinder_Normal_east.png" />
    <Content Include="Textures\Things\Pawn\Humanlike\Apparel\Bondage\Armbinder\Armbinder_Normal_north.png" />
    <Content Include="Textures\Things\Pawn\Humanlike\Apparel\Bondage\Armbinder\Armbinder_Normal_south.png" />
    <Content Include="Textures\Things\Pawn\Humanlike\Apparel\Bondage\Armbinder\Armbinder_Thin_east.png" />
    <Content Include="Textures\Things\Pawn\Humanlike\Apparel\Bondage\Armbinder\Armbinder_Thin_north.png" />
    <Content Include="Textures\Things\Pawn\Humanlike\Apparel\Bondage\Armbinder\Armbinder_Thin_south.png" />
    <Content Include="Textures\Things\Pawn\Humanlike\Apparel\Bondage\ChastityBelt\chastity_belt.png" />
    <Content Include="Textures\Things\Pawn\Humanlike\Apparel\Bondage\ChastityBelt\Chastity_Belt_Fat_east.png" />
    <Content Include="Textures\Things\Pawn\Humanlike\Apparel\Bondage\ChastityBelt\Chastity_Belt_Fat_north.png" />
    <Content Include="Textures\Things\Pawn\Humanlike\Apparel\Bondage\ChastityBelt\Chastity_Belt_Fat_south.png" />
    <Content Include="Textures\Things\Pawn\Humanlike\Apparel\Bondage\ChastityBelt\Chastity_Belt_Female_east.png" />
    <Content Include="Textures\Things\Pawn\Humanlike\Apparel\Bondage\ChastityBelt\Chastity_Belt_Female_north.png" />
    <Content Include="Textures\Things\Pawn\Humanlike\Apparel\Bondage\ChastityBelt\Chastity_Belt_Female_south.png" />
    <Content Include="Textures\Things\Pawn\Humanlike\Apparel\Bondage\ChastityBelt\Chastity_Belt_Hulk_east.png" />
    <Content Include="Textures\Things\Pawn\Humanlike\Apparel\Bondage\ChastityBelt\Chastity_Belt_Hulk_north.png" />
    <Content Include="Textures\Things\Pawn\Humanlike\Apparel\Bondage\ChastityBelt\Chastity_Belt_Hulk_south.png" />
    <Content Include="Textures\Things\Pawn\Humanlike\Apparel\Bondage\ChastityBelt\Chastity_Belt_Male_east.png" />
    <Content Include="Textures\Things\Pawn\Humanlike\Apparel\Bondage\ChastityBelt\Chastity_Belt_Male_Front.png" />
    <Content Include="Textures\Things\Pawn\Humanlike\Apparel\Bondage\ChastityBelt\Chastity_Belt_Male_north.png" />
    <Content Include="Textures\Things\Pawn\Humanlike\Apparel\Bondage\ChastityBelt\Chastity_Belt_Thin_east.png" />
    <Content Include="Textures\Things\Pawn\Humanlike\Apparel\Bondage\ChastityBelt\Chastity_Belt_Thin_north.png" />
    <Content Include="Textures\Things\Pawn\Humanlike\Apparel\Bondage\ChastityBelt\Chastity_Belt_Thin_south.png" />
    <Content Include="Textures\Things\Pawn\Humanlike\Apparel\Bondage\GagBall\gag_ball.png" />
    <Content Include="Textures\Things\Pawn\Humanlike\Apparel\Bondage\holokey.png" />
    <Content Include="Textures\Things\Pawn\Humanlike\Apparel\Bondage\hololock.png" />
    <Content Include="Textures\Things\Pawn\Humanlike\Apparel\Bondage\PrisonerChains\PrisonerChains.png" />
    <Content Include="Textures\Things\Pawn\Humanlike\Apparel\Bondage\PrisonerChains\PrisonerChains_Fat_east.png" />
    <Content Include="Textures\Things\Pawn\Humanlike\Apparel\Bondage\PrisonerChains\PrisonerChains_Fat_north.png" />
    <Content Include="Textures\Things\Pawn\Humanlike\Apparel\Bondage\PrisonerChains\PrisonerChains_Fat_south.png" />
    <Content Include="Textures\Things\Pawn\Humanlike\Apparel\Bondage\PrisonerChains\PrisonerChains_Female_east.png" />
    <Content Include="Textures\Things\Pawn\Humanlike\Apparel\Bondage\PrisonerChains\PrisonerChains_Female_north.png" />
    <Content Include="Textures\Things\Pawn\Humanlike\Apparel\Bondage\PrisonerChains\PrisonerChains_Female_south.png" />
    <Content Include="Textures\Things\Pawn\Humanlike\Apparel\Bondage\PrisonerChains\PrisonerChains_Hulk_east.png" />
    <Content Include="Textures\Things\Pawn\Humanlike\Apparel\Bondage\PrisonerChains\PrisonerChains_Hulk_north.png" />
    <Content Include="Textures\Things\Pawn\Humanlike\Apparel\Bondage\PrisonerChains\PrisonerChains_Hulk_south.png" />
    <Content Include="Textures\Things\Pawn\Humanlike\Apparel\Bondage\PrisonerChains\PrisonerChains_Male_east.png" />
    <Content Include="Textures\Things\Pawn\Humanlike\Apparel\Bondage\PrisonerChains\PrisonerChains_Male_north.png" />
    <Content Include="Textures\Things\Pawn\Humanlike\Apparel\Bondage\PrisonerChains\PrisonerChains_Male_south.png" />
    <Content Include="Textures\Things\Pawn\Humanlike\Apparel\Bondage\PrisonerChains\PrisonerChains_Thin_east.png" />
    <Content Include="Textures\Things\Pawn\Humanlike\Apparel\Bondage\PrisonerChains\PrisonerChains_Thin_north.png" />
    <Content Include="Textures\Things\Pawn\Humanlike\Apparel\Bondage\PrisonerChains\PrisonerChains_Thin_south.png" />
    <Content Include="Textures\UI\Commands\Breeder_Animal_off.png" />
    <Content Include="Textures\UI\Commands\Breeder_Animal_on.png" />
    <Content Include="Textures\UI\Commands\Breeding_Animal_off.png" />
    <Content Include="Textures\UI\Commands\Breeding_Animal_on.png" />
    <Content Include="Textures\UI\Commands\Breeding_Pawn_off.png" />
    <Content Include="Textures\UI\Commands\Breeding_Pawn_on.png" />
    <Content Include="Textures\UI\Commands\Breeding_Pawn_Refuse.png" />
    <Content Include="Textures\UI\Commands\cancel.png" />
    <Content Include="Textures\UI\Commands\ComfortPrisoner_off.png" />
    <Content Include="Textures\UI\Commands\ComfortPrisoner_on.png" />
    <Content Include="Textures\UI\Commands\ComfortPrisoner_Refuse.png" />
    <Content Include="Textures\UI\Commands\Hero_off.png" />
    <Content Include="Textures\UI\Commands\Hero_on.png" />
    <Content Include="Textures\UI\Commands\Milking_off.png" />
    <Content Include="Textures\UI\Commands\Milking_on.png" />
    <Content Include="Textures\UI\Commands\Service_off.png" />
    <Content Include="Textures\UI\Commands\Service_on.png" />
    <Content Include="Textures\UI\Commands\Service_Refuse.png" />
    <Content Include="Textures\UI\Commands\Submit.png" />
    <Content Include="Textures\UI\Icons\noheart.png" />
    <None Include="Defs\RandomDialoguesxml" />
    <Content Include="Defs\RecipeDefs\Recipes_Surgery_Futa_Male.xml" />
    <None Include="packages.config" />
    <None Include="Textures\.gitignore" />
  </ItemGroup>
  <ItemGroup>
    <None Include="LICENSE" />
  </ItemGroup>
  <ItemGroup>
    <Compile Include="Properties\AssemblyInfo.cs" />
  </ItemGroup>
  <ItemGroup>
    <Reference Include="%24HugsLibChecker, Version=0.5.0.0, Culture=neutral, processorArchitecture=MSIL">
      <HintPath>packages\UnlimitedHugs.Rimworld.HugsLibChecker.5.0.0\lib\net35\$HugsLibChecker.dll</HintPath>
      <SpecificVersion>False</SpecificVersion>
      <Private>False</Private>
    </Reference>
    <Reference Include="0Harmony, Version=1.2.0.1, Culture=neutral, processorArchitecture=MSIL">
      <HintPath>packages\UnlimitedHugs.Rimworld.HugsLib.6.1.1\lib\net35\0Harmony.dll</HintPath>
      <SpecificVersion>False</SpecificVersion>
      <Private>True</Private>
    </Reference>
    <Reference Include="0MultiplayerAPI">
      <HintPath>packages\Multiplayer\Assemblies\0MultiplayerAPI.dll</HintPath>
    </Reference>
    <Reference Include="Assembly-CSharp">
      <HintPath>..\..\RimWorldWin64_Data\Managed\Assembly-CSharp.dll</HintPath>
      <Private>False</Private>
    </Reference>
    <Reference Include="HugsLib, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
      <HintPath>packages\UnlimitedHugs.Rimworld.HugsLib.6.1.1\lib\net35\HugsLib.dll</HintPath>
      <SpecificVersion>False</SpecificVersion>
      <Private>False</Private>
    </Reference>
    <Reference Include="NAudio">
      <HintPath>..\..\RimWorldWin64_Data\Managed\NAudio.dll</HintPath>
      <Private>False</Private>
    </Reference>
    <Reference Include="NVorbis">
      <HintPath>..\..\RimWorldWin64_Data\Managed\NVorbis.dll</HintPath>
      <Private>False</Private>
    </Reference>
    <Reference Include="Psychology">
      <HintPath>packages\Psychology.2018-11-18\Assemblies\Psychology.dll</HintPath>
      <Private>False</Private>
    </Reference>
    <Reference Include="RimWorldChildren">
      <HintPath>packages\ChildrenAndPregnancy.0.4e\Assemblies\RimWorldChildren.dll</HintPath>
      <Private>False</Private>
    </Reference>
    <Reference Include="SyrTraits">
      <HintPath>packages\SYR.Individuality.1.1.4\Assemblies\SyrTraits.dll</HintPath>
      <Private>False</Private>
    </Reference>
    <Reference Include="System" />
    <Reference Include="UnityEngine">
      <HintPath>..\..\RimWorldWin64_Data\Managed\UnityEngine.dll</HintPath>
      <Private>False</Private>
    </Reference>
    <Reference Include="UnityEngine.UI">
      <HintPath>..\..\RimWorldWin64_Data\Managed\UnityEngine.UI.dll</HintPath>
      <Private>False</Private>
    </Reference>
  </ItemGroup>
  <ItemGroup />
  <Import Project="$(MSBuildToolsPath)\Microsoft.CSHARP.Targets" />
  <ProjectExtensions>
    <VisualStudio AllowExistingFolder="true" />
  </ProjectExtensions>
</Project>


code:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <ProjectView>ShowAllFiles</ProjectView>
  </PropertyGroup>
</Project>


code:
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.27130.2024
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RimJobWorld.Main", "RimJobWorld.Main.csproj", "{22F82FFF-8BD4-4CEE-9F22-C7DA71281E72}"
EndProject
Global
	GlobalSection(SolutionConfigurationPlatforms) = preSolution
		Debug|Any CPU = Debug|Any CPU
		Release|Any CPU = Release|Any CPU
	EndGlobalSection
	GlobalSection(ProjectConfigurationPlatforms) = postSolution
		{22F82FFF-8BD4-4CEE-9F22-C7DA71281E72}.Debug|Any CPU.ActiveCfg = Release|Any CPU
		{22F82FFF-8BD4-4CEE-9F22-C7DA71281E72}.Debug|Any CPU.Build.0 = Release|Any CPU
		{22F82FFF-8BD4-4CEE-9F22-C7DA71281E72}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{22F82FFF-8BD4-4CEE-9F22-C7DA71281E72}.Release|Any CPU.Build.0 = Release|Any CPU
	EndGlobalSection
	GlobalSection(SolutionProperties) = preSolution
		HideSolutionNode = FALSE
	EndGlobalSection
	GlobalSection(ExtensibilityGlobals) = postSolution
		SolutionGuid = {16BA61E5-4C97-4E73-926D-6718DE8E4776}
	EndGlobalSection
EndGlobal


code:
// #define TESTMODE // Uncomment to enable logging.

using Verse;
using Verse.AI;
using System.Collections.Generic;
using System.Linq;
using RimWorld;
using System.Diagnostics;
using Multiplayer.API;

namespace rjw
{
	/// <summary>
	/// Helper for sex with animals
	/// </summary>
	class BreederHelper
	{
		public const int max_animals_at_once = 1; // lets not forget that the purpose is procreation, not sodomy

		[Conditional("TESTMODE")]
		private static void DebugText(string msg)
		{
			Log.Message(msg);
		}

		//animal try to find best designated pawn to breed
		[SyncMethod]
		public static Pawn find_designated_breeder(Pawn pawn, Map m)
		{
			DebugText("BreederHelper::find_designated_breeder( " + xxx.get_pawnname(pawn) + " ) called");

			Pawn best_target = null;
			var best_fuckability = 0.10f; // Don't breed pawns with <10% fuckability

			IEnumerable<Pawn> targets = m.AllBreedDesignations().Where(x
				=> x != pawn
				&& xxx.is_not_dying(x)
				&& xxx.can_get_raped(x)
				&& !x.IsForbidden(pawn)
				&& !x.Suspended
				&& !x.HostileTo(pawn)
				&& pawn.CanReserveAndReach(x, PathEndMode.Touch, Danger.Some, max_animals_at_once)
				&& ((RJWSettings.bestiality_enabled && xxx.is_human(x)) || (RJWSettings.animal_on_animal_enabled && xxx.is_animal(x)))
				);

			foreach (var candidate in targets)
			{
				var fuc = xxx.would_fuck(pawn, candidate, invert_opinion: true, ignore_gender: (Genital_Helper.has_penis(pawn) || Genital_Helper.has_penis_infertile(pawn) || xxx.is_insect(pawn)));
				DebugText("BreederHelper::find_designated_breeder( " + xxx.get_pawnname(pawn) + " -> " + xxx.get_pawnname(candidate) + " (" + fuc.ToString() + " / " + best_fuckability.ToString() + ")");

				if ((fuc > best_fuckability) && (Rand.Value < fuc))
				{
					best_target = candidate;
					best_fuckability = fuc;
				}
			}
			return best_target;
		}

		//animal or human try to find animals to breed
		//public static Pawn find_breeder_animal(Pawn pawn, Map m, bool SameRace = true)
		[SyncMethod]
		public static Pawn find_breeder_animal(Pawn pawn, Map m)
		{
			DebugText("BreederHelper::find_breeder_animal( " + xxx.get_pawnname(pawn) + " ) called");

			float base_fuckability = 0.1f; //Determines how picky the pawns are. Could be added as config.
			List<Pawn> valid_targets = new List<Pawn>();

			//Pruning initial pawn list.
			IEnumerable<Pawn> targets = m.mapPawns.AllPawnsSpawned.Where(x
				=> x != pawn
				&& xxx.is_animal(x)
				&& xxx.can_get_raped(x)
				&& !x.IsForbidden(pawn)
				&& !x.Suspended
				&& !x.HostileTo(pawn)
				&& pawn.CanReserveAndReach(x, PathEndMode.Touch, Danger.Some, max_animals_at_once)
				//&& SameRace ? pawn.kindDef.race == x.kindDef.race : true
				);

			if (targets.Any())
			{
				//filter pawns for female, who can fuck her
				//not sure if faction check should be but w/e
				if (!Genital_Helper.has_penis(pawn) && !Genital_Helper.has_penis_infertile(pawn) && (Genital_Helper.has_vagina(pawn) || Genital_Helper.has_anus(pawn)))
				{
					targets = targets.Where(x => xxx.can_fuck(x) && x.Faction == pawn.Faction);
				}

				//for humans, animals dont have need - always = 3f
				//if not horny, seek only targets with safe temp
				if (xxx.need_some_sex(pawn) < 3.0f)
				{
					targets = targets.Where(x => pawn.CanReach(x, PathEndMode.Touch, Danger.None));
				}

				//Used for interspecies animal-on-animal.
				//Animals will only go for targets they can see.
				if (xxx.is_animal(pawn))
				{
					targets = targets.Where(x => pawn.CanSee(x) && pawn.def.defName != x.def.defName);
				}
				else
				{
					// Pickier about the targets if the pawn has no prior experience.
					if (pawn.records.GetValue(xxx.CountOfSexWithAnimals) < 3 && !xxx.is_zoophile(pawn))
					{
						base_fuckability *= 2f;
					}

					if (xxx.need_some_sex(pawn) > 2f)
					{   // Less picky when frustrated...
						base_fuckability *= 0.6f;
					}
					else if (xxx.need_some_sex(pawn) < 2f)
					{   // ...and far more picky when satisfied.
						base_fuckability *= 2.5f;
					}
				}
			}

			DebugText("[RJW]BreederHelper::find_breeder_animal::" + targets.Count() + " targets found on map.");

			if (!targets.Any())
			{
				return null; //None found.
			}

			foreach (Pawn target in targets)
			{
				DebugText("[RJW]BreederHelper::find_breeder_animal::Checking target " + target.kindDef.race.defName.ToLower());

				float fuc = xxx.would_fuck_animal(pawn, target); // 0.0 to ~3.0, orientation checks etc.

				if (!(fuc > base_fuckability)) continue;
				DebugText("Adding target" + target.kindDef.race.defName.ToLower());
				valid_targets.Add(target);
			}

			DebugText(valid_targets.Count() + " valid targets found on map.");
			//Rand.PopState();
			//Rand.PushState(RJW_Multiplayer.PredictableSeed());
			return valid_targets.Any() ? valid_targets.RandomElement() : null;
		}
	}
}


code:
/*
 *
 *
 * ALL THE CODE IN THIS FILE HAS JUST BEEN COPIED FROM THE DECOMPILED CORE ASSEMBLY.
 * Except for one little thing I had to change so it would (re)compile.
 *
 *
 */

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

namespace rjw_CORE_EXPOSED
{
	public static class JobDriver_Lovin
	{
		public static readonly SimpleCurve LovinIntervalHoursFromAgeCurve = new SimpleCurve
		{
			new CurvePoint(1f,  12f),
			new CurvePoint(16f, 6f),
			new CurvePoint(22f, 9f),
			new CurvePoint(30f, 12f),
			new CurvePoint(50f, 18f),
			new CurvePoint(75f, 24f)
		};
	}

	// 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 || pawn.health.hediffSet.HasHediff(HediffDef.Named("Armbinder")))
				//|| pawn.health.hediffSet.HasHediff(HediffDef.Named("Yoke")) || pawn.health.hediffSet.HasHediff(HediffDef.Named("BoundHands")))
				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 !pawn.Dead && !pawn.RaceProps.Animal && part.def.spawnThingOnRemoved != null && IsClean(pawn, part);
		}

		public static bool IsClean(Pawn pawn, BodyPartRecord part)
		{
			return !pawn.Dead && !(from x in pawn.health.hediffSet.hediffs
									where x.Part == part
									select x).Any<Hediff>();
		}

		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);
		}

		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;
		}

		public static void SpawnThingsFromHediffs(Pawn pawn, BodyPartRecord part, IntVec3 pos, Map map)
		{
			if (!pawn.health.hediffSet.GetNotMissingParts(BodyPartHeight.Undefined, BodyPartDepth.Undefined).Contains(part))
			{
				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)
				{
					//rjw implants/parts
					Thing thing = GenSpawn.Spawn(current.def.spawnThingOnRemoved, pos, map);
					//Log.Message("SpawnThingsFromHediffs test 1 " + current);
					//current.ExposeData();
					//thing.ExposeData();
					//Log.Message("SpawnThingsFromHediffs test 2 " + current);
					//Scribe_Values.Look<float>(ref part.Size, "size", 1);
					//Log.Message("SpawnThingsFromHediffs test 3 " + current);
				}
			}
			for (int i = 0; i < part.parts.Count; i++)
			{
				//MedicalRecipesUtility.SpawnThingsFromHediffs(pawn, part.parts[i], pos, map);
				//Log.Message("0SpawnThingsFromHediffs idk what it is" + part + " " + i);
				MedicalRecipesUtility.SpawnThingsFromHediffs(pawn, part.parts[i], pos, map);
			}
		}
	}

	public class Recipe_RemoveBodyPart : Recipe_Surgery
	{
		private const float ViolationGoodwillImpact = 20f;

		public override IEnumerable<BodyPartRecord> GetPartsToApplyOn(Pawn pawn, RecipeDef recipe)
		{
			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;
				}
			}
		}

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

		public override void ApplyOnPawn(Pawn pawn, BodyPartRecord part, Pawn billDoer, List<Thing> ingredients, Bill bill)
		{
			bool flag = MedicalRecipesUtility.IsClean(pawn, part);
			bool flag2 = this.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, PawnExecutionKind.OrganHarvesting);
				}
				ThoughtUtility.GiveThoughtsForPawnOrganHarvested(pawn);
			}
			if (flag2 && pawn.Faction != null && billDoer != null && billDoer.Faction != null)
			{
				Faction faction = pawn.Faction;
				Faction faction2 = billDoer.Faction;
				int goodwillChange = -15;
				string reason = "GoodwillChangedReason_RemovedBodyPart".Translate(part.LabelShort);
				GlobalTargetInfo? lookTarget = pawn;
				faction.TryAffectGoodwillWith(faction2, goodwillChange, 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_InstallArtificialBodyPart : Recipe_Surgery
	{
		public override IEnumerable<BodyPartRecord> GetPartsToApplyOn(Pawn pawn, RecipeDef recipe)
		{
			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
													select x;
						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)
		{
			bool flag = MedicalRecipesUtility.IsClean(pawn, part);
			bool flag2 = this.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.RestorePartAndSpawnAllPreviousParts(pawn, part, billDoer.Position, billDoer.Map);
			}
			else if (pawn.Map != null)
			{
				MedicalRecipesUtility.RestorePartAndSpawnAllPreviousParts(pawn, part, pawn.Position, pawn.Map);
			}
			else
			{
				pawn.health.RestorePart(part, null, true);
			}
			pawn.health.AddHediff(this.recipe.addsHediff, part, null, null);
			if (flag && flag2 && part.def.spawnThingOnRemoved != null)
			{
				ThoughtUtility.GiveThoughtsForPawnOrganHarvested(pawn);
			}
			if (flag2 && pawn.Faction != null && billDoer != null && billDoer.Faction != null)
			{
				Faction faction = pawn.Faction;
				Faction faction2 = billDoer.Faction;
				int goodwillChange = -15;
				string reason = "GoodwillChangedReason_NeedlesslyInstalledWorseBodyPart".Translate(recipe.addsHediff.label);
				GlobalTargetInfo? lookTarget = new GlobalTargetInfo?(pawn);
				faction.TryAffectGoodwillWith(faction2, goodwillChange, true, true, reason, lookTarget);
			}
		}

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

}