mirror of
				https://github.com/vegapnk/RJW-Genes.git
				synced 2024-08-15 00:23:31 +00:00 
			
		
		
		
	Added JobGiver flirt
Fixed error when loading save, added jobgiver flirt, uses chitchat for now, each interaction slightly reduces sexneed of target
This commit is contained in:
		
							parent
							
								
									7958f021b9
								
							
						
					
					
						commit
						262bef48c6
					
				
					 9 changed files with 98 additions and 10 deletions
				
			
		
										
											Binary file not shown.
										
									
								
							| 
						 | 
				
			
			@ -14,11 +14,6 @@
 | 
			
		|||
                <li Class="JobGiver_GetRest"/>
 | 
			
		||||
                <li Class="JobGiver_SatisfyChemicalNeed"/>
 | 
			
		||||
                <li Class="JobGiver_SatifyChemicalDependency" MayRequire="Ludeon.RimWorld.Biotech" />
 | 
			
		||||
                <li Class="ThinkNode_Priority_GetJoy">
 | 
			
		||||
                  <subNodes>
 | 
			
		||||
                    <li Class="JobGiver_GetJoy"/>
 | 
			
		||||
                  </subNodes>
 | 
			
		||||
                </li>
 | 
			
		||||
              </subNodes>
 | 
			
		||||
            </li>
 | 
			
		||||
          </subNodes>
 | 
			
		||||
| 
						 | 
				
			
			@ -45,7 +40,7 @@
 | 
			
		|||
		
 | 
			
		||||
		
 | 
			
		||||
		<!--Flirt with target pawn and try hookup with them, increases sexneed in target pawn, maybe flirt has custom text-->
 | 
			
		||||
		
 | 
			
		||||
		<li Class="RJW_Genes.JobGiver_Flirt" />
 | 
			
		||||
 | 
			
		||||
        <li Class="JobGiver_WanderNearDutyLocation">
 | 
			
		||||
          <wanderRadius>5</wanderRadius>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -22,4 +22,11 @@
 | 
			
		|||
		<casualInterruptible>false</casualInterruptible>
 | 
			
		||||
		<playerInterruptible>false</playerInterruptible>
 | 
			
		||||
	</JobDef>
 | 
			
		||||
	
 | 
			
		||||
	<JobDef>
 | 
			
		||||
		<defName>rjw_genes_flirt</defName>
 | 
			
		||||
		<driverClass>RJW_Genes.JobDriver_Flirt</driverClass>
 | 
			
		||||
		<reportString>Seduced.</reportString>
 | 
			
		||||
		<casualInterruptible>false</casualInterruptible>
 | 
			
		||||
	</JobDef>
 | 
			
		||||
</Defs>
 | 
			
		||||
| 
						 | 
				
			
			@ -12,7 +12,7 @@ namespace RJW_Genes
 | 
			
		|||
{
 | 
			
		||||
    public class IncidentWorker_SuccubusDreamVisit : IncidentWorker
 | 
			
		||||
    {
 | 
			
		||||
        //This incidint will only fire if there is a pawn asleep which while sexneed is lower than 0.25
 | 
			
		||||
        //This incidint will only fire if there is a pawn asleep and sexneed is lower than 0.25
 | 
			
		||||
        protected override bool CanFireNowSub(IncidentParms parms)
 | 
			
		||||
        {
 | 
			
		||||
            if (!base.CanFireNowSub(parms))
 | 
			
		||||
| 
						 | 
				
			
			@ -50,7 +50,7 @@ namespace RJW_Genes
 | 
			
		|||
                return false;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            //Spawn succubus at pawn and initiate sex
 | 
			
		||||
            //Spawn succubus at pawn
 | 
			
		||||
            Pawn succubus = PawnGenerator.GeneratePawn(new PawnGenerationRequest(PawnKindDef.Named("rjw_genes_succubus"), faction, PawnGenerationContext.NonPlayer, -1, 
 | 
			
		||||
                false, false, false, true, false, 1f, false, true, false, true, true, false, false, false, false, 0f, 0f, null, 1f, null, null, 
 | 
			
		||||
                null, null, null, null, null, null, null, null, null, null, false, false, false, false, null, null, null, null, null, 0f,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										56
									
								
								Source/Genes/Life_Force/JobDrivers/JobDriver_Flirt.cs
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								Source/Genes/Life_Force/JobDrivers/JobDriver_Flirt.cs
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,56 @@
 | 
			
		|||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using System.Text;
 | 
			
		||||
using System.Threading.Tasks;
 | 
			
		||||
using Verse;
 | 
			
		||||
using Verse.AI;
 | 
			
		||||
using RimWorld;
 | 
			
		||||
using rjw;
 | 
			
		||||
namespace RJW_Genes
 | 
			
		||||
{
 | 
			
		||||
	public class JobDriver_Flirt : JobDriver
 | 
			
		||||
	{
 | 
			
		||||
		private Pawn Target
 | 
			
		||||
		{
 | 
			
		||||
			get
 | 
			
		||||
			{
 | 
			
		||||
				return (Pawn)((Thing)this.pawn.CurJob.GetTarget(TargetIndex.A));
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		public override bool TryMakePreToilReservations(bool errorOnFailed)
 | 
			
		||||
		{
 | 
			
		||||
			return true;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		//Some wait toils to induce delay
 | 
			
		||||
		protected override IEnumerable<Toil> MakeNewToils()
 | 
			
		||||
		{
 | 
			
		||||
			this.FailOnDespawnedOrNull(TargetIndex.A);
 | 
			
		||||
			yield return Toils_Interpersonal.GotoInteractablePosition(TargetIndex.A);
 | 
			
		||||
			yield return Toils_General.Wait(600, TargetIndex.A);
 | 
			
		||||
			yield return Toils_Interpersonal.WaitToBeAbleToInteract(this.pawn);
 | 
			
		||||
			Toil toil = Toils_Interpersonal.GotoInteractablePosition(TargetIndex.A);
 | 
			
		||||
			toil.socialMode = RandomSocialMode.Off;
 | 
			
		||||
			yield return toil;
 | 
			
		||||
			yield return this.InteractToil();
 | 
			
		||||
			Toil toil1 = Toils_General.Wait(600, TargetIndex.A);
 | 
			
		||||
			toil1.socialMode = RandomSocialMode.Off;
 | 
			
		||||
			yield break;
 | 
			
		||||
		}
 | 
			
		||||
		private Toil InteractToil()
 | 
			
		||||
		{
 | 
			
		||||
			return Toils_General.Do(delegate
 | 
			
		||||
			{
 | 
			
		||||
				if (this.pawn.interactions.TryInteractWith(this.Target, InteractionDefOf.Chitchat))
 | 
			
		||||
				{
 | 
			
		||||
					Need_Sex need_Sex = this.Target.needs.TryGetNeed<Need_Sex>();
 | 
			
		||||
					need_Sex.CurLevel += -0.01f;
 | 
			
		||||
				}
 | 
			
		||||
			});
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		private const TargetIndex TargetInd = TargetIndex.A;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										24
									
								
								Source/Genes/Life_Force/JobGiver_Flirt.cs
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								Source/Genes/Life_Force/JobGiver_Flirt.cs
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,24 @@
 | 
			
		|||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using System.Text;
 | 
			
		||||
using System.Threading.Tasks;
 | 
			
		||||
using Verse;
 | 
			
		||||
using Verse.AI;
 | 
			
		||||
using RimWorld;
 | 
			
		||||
namespace RJW_Genes
 | 
			
		||||
{
 | 
			
		||||
	public class JobGiver_Flirt : ThinkNode_JobGiver
 | 
			
		||||
	{
 | 
			
		||||
		// Token: 0x0600405A RID: 16474 RVA: 0x0017271C File Offset: 0x0017091C
 | 
			
		||||
		protected override Job TryGiveJob(Pawn pawn)
 | 
			
		||||
		{
 | 
			
		||||
			Pawn target = pawn.mindState.duty.focus.Pawn;
 | 
			
		||||
			if (pawn.CanReach(target, PathEndMode.InteractionCell, Danger.Deadly))
 | 
			
		||||
            {
 | 
			
		||||
				return JobMaker.MakeJob(JobDefOf.rjw_genes_flirt, target);
 | 
			
		||||
			}
 | 
			
		||||
			return null;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -12,6 +12,10 @@ namespace RJW_Genes
 | 
			
		|||
    //Based on LordJob_VisitColony
 | 
			
		||||
    public class LordJob_SuccubusVisit : LordJob
 | 
			
		||||
    {
 | 
			
		||||
        public LordJob_SuccubusVisit()
 | 
			
		||||
        {
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
        public LordJob_SuccubusVisit(Pawn target)
 | 
			
		||||
        {
 | 
			
		||||
            this.target = target;
 | 
			
		||||
| 
						 | 
				
			
			@ -78,10 +82,9 @@ namespace RJW_Genes
 | 
			
		|||
        public override void ExposeData()
 | 
			
		||||
        {
 | 
			
		||||
            Scribe_Values.Look<int?>(ref this.durationTicks, "durationTicks", null, false);
 | 
			
		||||
            Scribe_References.Look<Pawn>(ref this.target, "target", false);
 | 
			
		||||
        }
 | 
			
		||||
        public Pawn target;
 | 
			
		||||
        private int? durationTicks;
 | 
			
		||||
        public StateGraph exitSubgraph;
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,5 +14,6 @@ namespace RJW_Genes
 | 
			
		|||
        public static readonly JobDef rjw_genes_lifeforce_seduced;
 | 
			
		||||
        public static readonly JobDef sex_on_spot;
 | 
			
		||||
        public static readonly JobDef sex_on_spot_reciever;
 | 
			
		||||
        public static readonly JobDef rjw_genes_flirt;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -130,9 +130,11 @@
 | 
			
		|||
    <Compile Include="Genes\Life_Force\Gene_LifeForceDrain.cs" />
 | 
			
		||||
    <Compile Include="Genes\Life_Force\IncidentWorker_SuccubusDreamVisit.cs" />
 | 
			
		||||
    <Compile Include="Genes\Life_Force\IngestionOutcomeDoer_LifeForceOffset.cs" />
 | 
			
		||||
    <Compile Include="Genes\Life_Force\JobDrivers\JobDriver_Flirt.cs" />
 | 
			
		||||
    <Compile Include="Genes\Life_Force\JobDrivers\JobDriver_SexOnSpotReceiver.cs" />
 | 
			
		||||
    <Compile Include="Genes\Life_Force\JobDrivers\JobDriver_SexOnSpot.cs" />
 | 
			
		||||
    <Compile Include="Genes\Life_Force\JobDrivers\JobDriver_Seduced.cs" />
 | 
			
		||||
    <Compile Include="Genes\Life_Force\JobGiver_Flirt.cs" />
 | 
			
		||||
    <Compile Include="Genes\Life_Force\LordJob_SuccubusVisit.cs" />
 | 
			
		||||
    <Compile Include="Genes\Life_Force\LordToil_Flirt.cs" />
 | 
			
		||||
    <Compile Include="Genes\Life_Force\Patch_SexTicks_ChangePsyfocus.cs" />
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue