Jump to content

Recommended Posts

I was wondering how the whoring systems supposed to work? I have the whoring tab enabled and have set all my colonist as whores but none of them are going to solicit visitors and I'm not sure why, theyve have plenty of opportunities and visitors come often but none of them have ever tried to instigate whoring. Has this function been disabled or am i doing something wrong?

Link to comment
6 hours ago, Pablooxxx said:

Ok, I think that I got it sorted out. It is a combination of different issues, but I can now always set the correct giver and receiver. In the case of non-penetrating sex the giver will need to be switched to receiver in the semenhelper (e.g. giving a blowjob make the pawn the active part aka giver, but it should have the cum on the jaw afterwards).

 

@Ed86 Do you want me to post my solution here or where is the best location? Maybe a seperate thread to discuss it? (I never used gitgud or any git tool before and this is the first time that I ever programmed something in c#)

post here i guess

Link to comment

Step 1: Root cause of the issue was that Pawn and Partner might be switched depending on the action. To fix this I need to change in JobDriver_*.cs that Toil afterSex and in there SexUtility.ProcessSex is as follows (this might be somehow defined better in one of the upper classes but my code works. Details might differ for rape contents, but I am sure you know how to adjust):

			Toil afterSex = new Toil
			{
				initAction = delegate
				{
					Log.Message("JobDriver_BestialityForFemale::MakeNewToils() - Calling aftersex");
					//// Trying to add some interactions and social logs
					Pawn Giver;
					Pawn Receiver;
					if (Sexprops.Giver is Pawn && Sexprops.Reciever is Pawn)
					{
						Log.Message("JobDriver_BestialityForFemale: Pawn " + xxx.get_pawnname(pawn));
						Log.Message("JobDriver_BestialityForFemale: Partner " + xxx.get_pawnname(Partner));
						Giver=Sexprops.Giver as Pawn;
						Receiver=Sexprops.Reciever as Pawn;
						Log.Message("JobDriver_BestialityForFemale: Sexprops.Giver " + xxx.get_pawnname(Sexprops.Giver));
						Log.Message("JobDriver_BestialityForFemale: Sexprops.Reciever " + xxx.get_pawnname(Sexprops.Reciever));
						SexUtility.ProcessSex(Giver, Receiver, usedCondom: usedCondom, sextype: sexType);
					}
					else
						SexUtility.ProcessSex(Partner, pawn, usedCondom: usedCondom, sextype: sexType);
				},
				defaultCompleteMode = ToilCompleteMode.Instant
			};

As you can see pawn and partner are not always Sexprops.Giver and Sexprops.Reciever. The if, else condition was implemented by me to avoid bugs when Sexprops.Giver or Sexprops.Receiver is given directly as argument. I will show some screenshots to proof that it works later.

 

Step 2: In SemenHelper.cs the function calculateAndApplySemen needs to change its conditions who is giver and who is receiver to

		public static void calculateAndApplySemen(Pawn pawn, Pawn partner, xxx.rjwSextype sextype)
		{
			if (!RJWSettings.cum_on_body) return;

			Pawn giver, receiver;
			//Rand.PopState();
			//Rand.PushState(RJW_Multiplayer.PredictableSeed());
			giver = pawn;
			receiver = partner;
			
			List<Hediff> giverparts;
			List<Hediff> receiverparts;
			
			var pawnparts = Genital_Helper.get_PartsHediffList(pawn, Genital_Helper.get_genitalsBPR(pawn));
			var partnerparts = Genital_Helper.get_PartsHediffList(partner, Genital_Helper.get_genitalsBPR(partner));
			
			giverparts=pawnparts;
			receiverparts=partnerparts;
			

			//dispenser of the seed
			Log.Message("Semenhelper: Giver: " + xxx.get_pawnname(pawn) + " current Job: "+ pawn.CurJob.def);
			Log.Message("Semenhelper: Receiver: " + xxx.get_pawnname(partner) + " current Job: "+ partner.CurJob.def);

			if (!Genital_Helper.has_penis_fertile(pawn, pawnparts) 
					&& !Genital_Helper.has_penis_fertile(partner, partnerparts)
					&& !xxx.is_mechanoid(giver) 
					&& !xxx.is_insect(giver))
			{
				Log.Message("Semen Helper: female on female or has_penis_fertile missing: Cum cancelled!!!");
				return;
			}
			
			//e.g. giving a blowjob makes the pawn the active part aka giver, but it should have the cum on the jaw afterwards
			else if((sextype == rjw.xxx.rjwSextype.Handjob 
						|| sextype == rjw.xxx.rjwSextype.Footjob 
						|| sextype == rjw.xxx.rjwSextype.Boobjob 
						|| sextype == rjw.xxx.rjwSextype.Oral))
			{
				giver = partner;
				giverparts = partnerparts;
				receiver = pawn;
				receiverparts = pawnparts;
				Log.Message("Semen Helper: Non-penetrating sex <--> switch giver and receiver");
			}

			//slimes do not waste fluids?

And that was all to fix the bug ?.

 

Furthermore, I did define some actions for futa on futa, but if both futas cum, the implementation of autofellation, or self boobjob for futas, is up to the design:

					//futa on futa special case
					else if((sextype == xxx.rjwSextype.Scissoring || sextype == xxx.rjwSextype.MutualMasturbation)
						&& Genital_Helper.has_penis_fertile(giver, giverparts) && Genital_Helper.has_penis_fertile(receiver, receiverparts))
					{
						foreach (BodyPartRecord bpr in targetParts)
						{
							if (bpr != null)
							{
								Log.Message("Semenhelper.cumOn Giver: " + xxx.get_pawnname(receiver) + " gets amount of " + cumAmount + " cum on " + bpr);
								SemenHelper.cumOn(giver, bpr, cumAmount, receiver, entityType);//cum on partner
							}
						}
						foreach (BodyPartRecord bpr in targetParts)
						{
							if (bpr != null)
							{
								Log.Message("Semenhelper.cumOn Receiver: " + xxx.get_pawnname(receiver) + " gets amount of " + cumAmount + " cum on " + bpr);
								SemenHelper.cumOn(receiver, bpr, cumAmount, giver, entityType);//cum on partner
							}
						}
					}

 

Screenshots to proof that it works and better show what was actually fixed and the changed files (I did not implement and the JobDriver_Rape* variants so far, but I dont see why it should not work).

 

screenshot36_small.png

screenshot35_small.png

screenshot33_small.png

SemenHelper.cs JobDriver_SexCasual.cs JobDriver_Mating.cs JobDriver_Breeding.cs JobDriver_SexQuick.cs JobDriver_BestialityForMale.cs JobDriver_BestialityForFemale.cs

Link to comment
On 9/9/2020 at 2:45 AM, LLsmo18 said:

I got the same problem.

Animals arent breeding.

No Mods except Rimjobworld and dependencies.

Jobdriver.Mate or something shows up red in debug log.

 

Thank you in advance

 

I downgraded to 4.4.4 because I remembered it working a while ago in the same game and it immediately worked again with that version. It seems there was some sort of regression in 4.4.5.

Link to comment

Not sure if this is reported but an issue with whoring.

Sometimes by guests [Hospitality] will accept the deal from my prisoners [Prison Labour], and they'll have a go at it, but then they won't pay .

I see the exclamation mark turn up, so I'm guessing they do the deed and then refuse? IDK

the whoring tab doesn't count this as a whoring experience, but my whore gets a mood debuff, (and most importantly, no silver)

Any idea why this is happening?

Link to comment
On 9/5/2020 at 9:34 PM, HiShmexDrive said:

>writes essays and fixates on kinsey

>puts massive emphasis on how important it is

>gets told that we don't do psychology here, go bother a mod author on steam

>asks for threesomes to include a male anilingus animation while male and female are MAKING BABIES.

"It's just a game bro"

>every single post is about politics.

?

go'way off to reddit or twitter with yea. 

 

Why do you feel so compelled to respond to my posts with noise if you think they're uninteresting?

Link to comment
2 hours ago, Still Alive said:

Why do you feel so compelled to respond to my posts with noise if you think they're uninteresting?

Friendly reminder that this thread is about a sex mod for an indie game, not a debate club to find out who can have the last word, please stop both of you

Link to comment
On 9/12/2020 at 6:32 PM, Pablooxxx said:

Step 1: Root cause of the issue was that Pawn and Partner might be switched depending on the action. To fix this I need to change in JobDriver_*.cs that Toil afterSex and in there SexUtility.ProcessSex is as follows (this might be somehow defined better in one of the upper classes but my code works. Details might differ for rape contents, but I am sure you know how to adjust):


			Toil afterSex = new Toil
			{
				initAction = delegate
				{
					Log.Message("JobDriver_BestialityForFemale::MakeNewToils() - Calling aftersex");
					//// Trying to add some interactions and social logs
					Pawn Giver;
					Pawn Receiver;
					if (Sexprops.Giver is Pawn && Sexprops.Reciever is Pawn)
					{
						Log.Message("JobDriver_BestialityForFemale: Pawn " + xxx.get_pawnname(pawn));
						Log.Message("JobDriver_BestialityForFemale: Partner " + xxx.get_pawnname(Partner));
						Giver=Sexprops.Giver as Pawn;
						Receiver=Sexprops.Reciever as Pawn;
						Log.Message("JobDriver_BestialityForFemale: Sexprops.Giver " + xxx.get_pawnname(Sexprops.Giver));
						Log.Message("JobDriver_BestialityForFemale: Sexprops.Reciever " + xxx.get_pawnname(Sexprops.Reciever));
						SexUtility.ProcessSex(Giver, Receiver, usedCondom: usedCondom, sextype: sexType);
					}
					else
						SexUtility.ProcessSex(Partner, pawn, usedCondom: usedCondom, sextype: sexType);
				},
				defaultCompleteMode = ToilCompleteMode.Instant
			};

As you can see pawn and partner are not always Sexprops.Giver and Sexprops.Reciever. The if, else condition was implemented by me to avoid bugs when Sexprops.Giver or Sexprops.Receiver is given directly as argument. I will show some screenshots to proof that it works later.

 

Step 2: In SemenHelper.cs the function calculateAndApplySemen needs to change its conditions who is giver and who is receiver to


		public static void calculateAndApplySemen(Pawn pawn, Pawn partner, xxx.rjwSextype sextype)
		{
			if (!RJWSettings.cum_on_body) return;

			Pawn giver, receiver;
			//Rand.PopState();
			//Rand.PushState(RJW_Multiplayer.PredictableSeed());
			giver = pawn;
			receiver = partner;
			
			List<Hediff> giverparts;
			List<Hediff> receiverparts;
			
			var pawnparts = Genital_Helper.get_PartsHediffList(pawn, Genital_Helper.get_genitalsBPR(pawn));
			var partnerparts = Genital_Helper.get_PartsHediffList(partner, Genital_Helper.get_genitalsBPR(partner));
			
			giverparts=pawnparts;
			receiverparts=partnerparts;
			

			//dispenser of the seed
			Log.Message("Semenhelper: Giver: " + xxx.get_pawnname(pawn) + " current Job: "+ pawn.CurJob.def);
			Log.Message("Semenhelper: Receiver: " + xxx.get_pawnname(partner) + " current Job: "+ partner.CurJob.def);

			if (!Genital_Helper.has_penis_fertile(pawn, pawnparts) 
					&& !Genital_Helper.has_penis_fertile(partner, partnerparts)
					&& !xxx.is_mechanoid(giver) 
					&& !xxx.is_insect(giver))
			{
				Log.Message("Semen Helper: female on female or has_penis_fertile missing: Cum cancelled!!!");
				return;
			}
			
			//e.g. giving a blowjob makes the pawn the active part aka giver, but it should have the cum on the jaw afterwards
			else if((sextype == rjw.xxx.rjwSextype.Handjob 
						|| sextype == rjw.xxx.rjwSextype.Footjob 
						|| sextype == rjw.xxx.rjwSextype.Boobjob 
						|| sextype == rjw.xxx.rjwSextype.Oral))
			{
				giver = partner;
				giverparts = partnerparts;
				receiver = pawn;
				receiverparts = pawnparts;
				Log.Message("Semen Helper: Non-penetrating sex <--> switch giver and receiver");
			}

			//slimes do not waste fluids?

And that was all to fix the bug ?.

 

Furthermore, I did define some actions for futa on futa, but if both futas cum, the implementation of autofellation, or self boobjob for futas, is up to the design:


					//futa on futa special case
					else if((sextype == xxx.rjwSextype.Scissoring || sextype == xxx.rjwSextype.MutualMasturbation)
						&& Genital_Helper.has_penis_fertile(giver, giverparts) && Genital_Helper.has_penis_fertile(receiver, receiverparts))
					{
						foreach (BodyPartRecord bpr in targetParts)
						{
							if (bpr != null)
							{
								Log.Message("Semenhelper.cumOn Giver: " + xxx.get_pawnname(receiver) + " gets amount of " + cumAmount + " cum on " + bpr);
								SemenHelper.cumOn(giver, bpr, cumAmount, receiver, entityType);//cum on partner
							}
						}
						foreach (BodyPartRecord bpr in targetParts)
						{
							if (bpr != null)
							{
								Log.Message("Semenhelper.cumOn Receiver: " + xxx.get_pawnname(receiver) + " gets amount of " + cumAmount + " cum on " + bpr);
								SemenHelper.cumOn(receiver, bpr, cumAmount, giver, entityType);//cum on partner
							}
						}
					}

 

Screenshots to proof that it works and better show what was actually fixed and the changed files (I did not implement and the JobDriver_Rape* variants so far, but I dont see why it should not work).

 

screenshot36_small.png

screenshot35_small.png

screenshot33_small.png

SemenHelper.cs 30.85 kB · 3 downloads JobDriver_SexCasual.cs 3.16 kB · 3 downloads JobDriver_Mating.cs 3.6 kB · 3 downloads JobDriver_Breeding.cs 4.23 kB · 3 downloads JobDriver_SexQuick.cs 9.49 kB · 3 downloads JobDriver_BestialityForMale.cs 7.03 kB · 4 downloads JobDriver_BestialityForFemale.cs 4.39 kB · 3 downloads

that.. uh... looks wrong, which you can see at 2nd SS where pawn rapes stallion but stallion turns tables and rapes pawn and impregnates it

Link to comment
4 hours ago, Ed86 said:

that.. uh... looks wrong, which you can see at 2nd SS where pawn rapes stallion but stallion turns tables and rapes pawn and impregnates it

Well you could consider this wrong, but that is not something I wanted or planned to fix with my patch, i.e. my goal was that the text and the result of SemenHelper.cs should match, which it fixes. I do not change anything on the actual action that is happening. The log message just provides me what happens.

 

If you do not want to let the stallion turn the tables, you need to fix it in RMB_Menu.cs --> (Line 363) public static List<FloatMenuOption> GenerateSexRoleOptions(Pawn pawn, LocalTargetInfo target, bool rape, Job job):

			for (int i = 0; i < SexUtility.rmb_dictionarykeys.GetLength(0); i++)
			{
				InteractionDef dictionaryKey = null;
				if (sexScores[i] > 0)
					dictionaryKey = SexUtility.rmb_dictionarykeys[i, arraytype];
				if (dictionaryKey != null)
				{
					//Log.Message("dictionarykeys id: " + i);
					//Log.Message("dictionaryKey " + dictionaryKey);

					var prefix = "Do ";
					var postfix = "";
					//if (rape)
					//	prefix = " - Rape";
					var t2 = i;
					var giving = pawn;
					var receiving = partner;
					if (t2 % 2 != 0 && !rape)
					{
						giving = partner;
						receiving = pawn;
						prefix = "Ask for ";
						if(arraytype == 2)
							prefix = "Provide for ";

						postfix = "";
					}
					option = FloatMenuUtility.DecoratePrioritizedTask(new FloatMenuOption(prefix + dictionaryKey.label + postfix, delegate ()
					//option = FloatMenuUtility.DecoratePrioritizedTask(new FloatMenuOption("Commit " + dictionaryKey.LabelCap + t1, delegate ()
					{
						pawn.jobs.TryTakeOrderedJob(job);
						//if (pawn.jobs.TryTakeOrderedJob(new Job(xxx.quick_sex, partner)))
						//{
						//if (t1 == " - Recieve") 
						//{
						//Log.Message("i: " + t2 + " arraytype: " + arraytype);
						//Log.Message("job: " + pawn.jobs.curDriver);
						var rulepack = SexUtility.rulepacks[t2, arraytype];
						//Log.Message("rulepack: " + rulepack);
						var props = new SexProps(pawn, partner, SexUtility.sexActs[dictionaryKey], rape, giving, receiving, rulepack, dictionaryKey);
						//Log.Message("props: " + props);
						(pawn.jobs.curDriver as JobDriver_Sex).Sexprops = props;
						//Log.Message("fin: " + pawn.jobs.curDriver);
							//}
						//}


						//FloatMenuUtility.MakeMenu(GenerateSexPoseOptions(pawn, target).Where(x => x.action != null), (FloatMenuOption opt) => opt.Label, (FloatMenuOption opt) => opt.action);
					}, MenuOptionPriority.High), pawn, target);
					opts.AddDistinct(option);
				}
			}

I guess this is the root cause of the issue, but I am not entirely sure. Also I think this job is not considered rape, which maybe another reason why the action is switched. If the pawn is not zoophile, it even gets a bad thought (aka I was so horny that I let an animal breed me). While in the case of rape they dont get this thought.

Link to comment

While working on some changes, a couple people asked me for clarification on the stats in RJW.  Since they weren't all clear to me at first either, I wrote up a small guide.  Feel free to add it to the FAQ if you think it is useful.

 

Sex Need

One of the main features of RJW.  The Sex need works just like food or rest.  It decreases over time and should be managed to keep your pawns happy.  
Having a low sex need will result in negative moods like Horny or Sexually Frustrated, while having a high sex need will result in positive moods like Sexually Satisfied or even Ahegao.

 

Sex Drive

Also called SexFrequency in the XML.  This is similar to Hunger Rate or Rest Rate in the base game.  It affects how fast the sex need goes down.  Having a higher sex drive means a pawn's sex need will go down faster and they will want sex more often.  Conversely, having a low sex drive means the pawn can go for longer without sex and remain happy.

 

Sex drive is affected by the following base values:

  • BloodPumping (minor influence)
  • Consciousness
  • Fertility
  • Manipulation
  • Metabolism (minor influence)
  • Moving
  • Sight (minor influence)

 

Sex Ability

This represents how skilled a pawn is at sex.  It changes how much sex need is gained by a partner during sex.  Higher Sex Ability will result in more sexual satisfaction for a pawn's lover.  For example, If Pawn A and Pawn B have sex, the sex need of Pawn B will fill up more if Pawn A has a high Sex Ability.  Conversely, a low Sex ability will not fill a partner's sex need very much, and the partner will be unsatisfied, needing sex again soon.  In the case of masturbation, a pawns Sex Ability is used on themselves.

 

Sex Ability is affected by the following base values:

  • Consciousness
  • Manipulation
  • Food Need
  • Rest Need

 

Sex Satisfaction

(Added in RJW 4.4.6)

This is almost the inverse of Sex Ability.  Sex Satisfaction is how much enjoyment a pawn gets out of sex, regardless of their partner's abilities.  Having a high Sex Satisfaction will result in a pawn's sex need filling up more from sex, making them more likely to get positive mood buffs after sex.  Conversely, having a low Sex Satisfaction means that a pawn has a hard time being satisfied by sex, and will not have their need filled as easily.

 

Sex Satisfaction is affected by the following base values:

  • BloodPumping
  • Consciousness
  • Rest Need

 

Vulnerability

This represents how easy it is for a pawn to be taken advantage of sexually.  A high Vulnerability will mean a pawn is more likely to be the target of rape and less able to resist it.  Conversely, a low Vulnerability value means a pawn will be targeted by rapists less often.

 

Vulnerability is affected by the following base values:
(These values are inverted, meaning a higher value gives a lower vulnerability score)

  • Melee Skill
  • Consciousness
  • Manipulation
  • Moving
  • Sight
  • Food Need (Not Inverted)
  • Rest Need (Not Inverted)

 

Fertility

Represents how likely a pawn is to get pregnant or impregnate a partner during sex.  This is not affected by any base values, but it is affected by many health conditions, like IUDs and various sex drugs.

Link to comment

So I was wondering if it's possible to add, in the pregnancy options, the ability to set the chance of an offspring's gender based on the mother's species.
For instance, when set to 100%,if I got a pregnant Night Elf,should the offspring be female then it will also be a night elf. however if its male then it'd be of the father's species and never of the mother' species.
Another options to complement this one would be to set a chance that if it's male,then instead it'd still be female but with male sexual gender parts.
Was this already asked ? I searched but couldn't find anything exactly like this.
 

Link to comment

So, for some reason my pawns seem perfectly happy to drag equines(?) into their rooms for a quick session automatically when their desire reaches the necessary point, but not any other animal. So far I've seen it with horses, donkeys, and a steer that was staying over temporarily. Is there a way to make it so they do it for all animals?

Link to comment
3 hours ago, dragonlord217 said:

So, for some reason my pawns seem perfectly happy to drag equines(?) into their rooms for a quick session automatically when their desire reaches the necessary point, but not any other animal. So far I've seen it with horses, donkeys, and a steer that was staying over temporarily. Is there a way to make it so they do it for all animals?

everyone knows that horse cock - best cock

 

not really, you need tame animals or pawns with quirks for wild animals

Link to comment
28 minutes ago, Ed86 said:

everyone knows that horse cock - best cock

 

not really, you need tame animals or pawns with quirks for wild animals

Yeah, I have an entire zoo's worth of tamed animals in the colony including a bear, two foxes, a warg, a boar, etc, etc. The donkey has a wildness of 3% and the stallion has a wildness of 50% so that covers most of the possible range. Everyone is maximum tamed as well. But despite all this, the only two animals getting any action (without me telling the pawns to manually) are the stallion and the donkey. It's bizarre.

 

Oh, and a bug report while I'm here: it seems that there's supposed to be different thoughts for anal and vaginal sex with animals, but I've never seen the anal one, despite it happening on quite a frequent basis.

 

EDIT: Can confirm wildness isn't a factor. Jacked the donkey's wildness up to 80% and it still didn't change anything. 

Link to comment
1 hour ago, dragonlord217 said:

Yeah, I have an entire zoo's worth of tamed animals in the colony including a bear, two foxes, a warg, a boar, etc, etc. The donkey has a wildness of 3% and the stallion has a wildness of 50% so that covers most of the possible range. Everyone is maximum tamed as well. But despite all this, the only two animals getting any action (without me telling the pawns to manually) are the stallion and the donkey. It's bizarre.

 

Oh, and a bug report while I'm here: it seems that there's supposed to be different thoughts for anal and vaginal sex with animals, but I've never seen the anal one, despite it happening on quite a frequent basis.

 

EDIT: Can confirm wildness isn't a factor. Jacked the donkey's wildness up to 80% and it still didn't change anything. 

i think there body size limit, female pawns wont go after small animals, i think its something 75% of their bodysize

Link to comment
21 hours ago, terrorofmorrowind said:

Up untill now I was still running stuff with an older version this mod but thanks to facial animations new update I decided to move on. Is this still compatible with rimworld 1.1 or shold I move on to 1.2?

Latest RJW should still work totally fine on 1.1.2654. If you are using Facial Animation and RJW-Animation Framework you need to use the latest animation framework and also copy the assembly from the 1.2 folder and replace the assembly in the 1.1 folder.

Link to comment
13 hours ago, Ed86 said:

i think there body size limit, female pawns wont go after small animals, i think its something 75% of their bodysize

So I tested it some more and, for some reason, it seems that wildness is why the colonists were being so selective. For some reason taking a donkey up to 80 wildness doesn't affect its suitability at all, but taking a warg down to 0 does. 

Link to comment
2 minutes ago, dragonlord217 said:

So I tested it some more and, for some reason, it seems that wildness is why the colonists were being so selective. For some reason taking a donkey up to 80 wildness doesn't affect its suitability at all, but taking a warg down to 0 does. 

There are specific traits/quirks that adjust their preferences on what amount of wildness of animal they will want to do it with.

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. For more information, see our Privacy Policy & Terms of Use