mirror of
				https://github.com/vegapnk/RJW-Genes.git
				synced 2024-08-15 00:23:31 +00:00 
			
		
		
		
	Improved SuccubusDreamVisitIncident, added settings & incubus xenotype draft
This commit is contained in:
		
							parent
							
								
									a72dc01d73
								
							
						
					
					
						commit
						71b89e43fa
					
				
					 20 changed files with 416 additions and 108 deletions
				
			
		| 
						 | 
				
			
			@ -23,7 +23,7 @@ namespace RJW_Genes
 | 
			
		|||
        //Summary//
 | 
			
		||||
        //Adds our own partpreferences to rjw's list. Our partpreferences are under Interactions.GenesPartKindUsageRule
 | 
			
		||||
        //
 | 
			
		||||
        private static void AddtoIPartPreferenceRule()
 | 
			
		||||
        private static void InjectIntoRjwInteractionServices()
 | 
			
		||||
        {
 | 
			
		||||
            List<IPartPreferenceRule> partPreferenceRules = Unprivater.GetProtectedValue<List<IPartPreferenceRule>>("_partKindUsageRules", typeof(PartPreferenceDetectorService));
 | 
			
		||||
            partPreferenceRules.Add(new Interactions.GenesPartKindUsageRule());
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -24,6 +24,11 @@ namespace RJW_Genes
 | 
			
		|||
            {
 | 
			
		||||
                return false;
 | 
			
		||||
            }
 | 
			
		||||
            if (!RJW_GenesSettings.rjw_genes_sexdemon_visit_incubi && !RJW_GenesSettings.rjw_genes_sexdemon_visit_succubi)
 | 
			
		||||
            {
 | 
			
		||||
                return false;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            foreach (Pawn pawn in map.mapPawns.FreeColonistsAndPrisonersSpawned)
 | 
			
		||||
            {
 | 
			
		||||
                if (pawn.jobs.curDriver.asleep && xxx.need_some_sex(pawn) > 1f)
 | 
			
		||||
| 
						 | 
				
			
			@ -38,46 +43,68 @@ namespace RJW_Genes
 | 
			
		|||
        protected override bool TryExecuteWorker(IncidentParms parms)
 | 
			
		||||
        {
 | 
			
		||||
            Map map = (Map)parms.target;
 | 
			
		||||
            Pawn victim = ValidVictims(map).RandomElement();
 | 
			
		||||
            if (victim == null)
 | 
			
		||||
            List < Pawn > victims = ValidVictims(map).ToList();
 | 
			
		||||
            if(victims.NullOrEmpty())
 | 
			
		||||
            {
 | 
			
		||||
                return false;
 | 
			
		||||
            }
 | 
			
		||||
            IntVec3 loc = victim.Position;
 | 
			
		||||
            Faction faction;
 | 
			
		||||
            if (!this.TryFindFormerFaction(out faction))
 | 
			
		||||
            {
 | 
			
		||||
                return false;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            //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,
 | 
			
		||||
                DevelopmentalStage.Adult, null, null, null, false));
 | 
			
		||||
            succubus.SetFaction(null, null);
 | 
			
		||||
            GenSpawn.Spawn(succubus, loc, map, WipeMode.Vanish);
 | 
			
		||||
 | 
			
		||||
            //Set succubus behaviour
 | 
			
		||||
            List<Pawn> list = new List<Pawn> {succubus};
 | 
			
		||||
            LordMaker.MakeNewLord(parms.faction, this.CreateLordJob(parms, succubus, victim), map, list);
 | 
			
		||||
 | 
			
		||||
            //Make succubus rape victim.
 | 
			
		||||
            if (RJWSettings.rape_enabled)
 | 
			
		||||
            int pawn_amount = RJW_GenesSettings.rjw_genes_sexdemon_visit_groups ? Rand.Range(1, victims.Count) : 1;
 | 
			
		||||
            List<Pawn> new_sexdemons = new List<Pawn>();
 | 
			
		||||
            for (int i = 0; i < pawn_amount; i++)
 | 
			
		||||
            {
 | 
			
		||||
                succubus.pather.StopDead(); 
 | 
			
		||||
                succubus.jobs.StopAll();
 | 
			
		||||
                Job newJob = JobMaker.MakeJob(xxx.RapeRandom, victim);
 | 
			
		||||
                succubus.jobs.StartJob(newJob, JobCondition.InterruptForced, null, false, true, null, null, false, false, null, false, true);
 | 
			
		||||
            }
 | 
			
		||||
                Pawn victim = victims.RandomElement();
 | 
			
		||||
                IntVec3 loc = victim.Position;
 | 
			
		||||
 | 
			
		||||
            //Broken for now
 | 
			
		||||
            //Sends letter
 | 
			
		||||
            //string value = succubus.DevelopmentalStage.Child() ? "FeralChild".Translate().ToString() : succubus.KindLabel;
 | 
			
		||||
            //TaggedString value2 = succubus.DevelopmentalStage.Child() ? "Child".Translate() : "Person".Translate();
 | 
			
		||||
            //TaggedString baseLetterLabel = this.def.letterLabel.Formatted(value).CapitalizeFirst();
 | 
			
		||||
            //TaggedString baseLetterText = this.def.letterText.Formatted(succubus.NameShortColored, value2, succubus.Named("PAWN")).AdjustedFor(succubus, "PAWN", true).CapitalizeFirst();
 | 
			
		||||
            //PawnRelationUtility.TryAppendRelationsWithColonistsInfo(ref baseLetterText, ref baseLetterLabel, succubus);
 | 
			
		||||
                PawnKindDef pawnKindDef;
 | 
			
		||||
                Gender gender;
 | 
			
		||||
                if (victim.gender == Gender.Male || !RJW_GenesSettings.rjw_genes_sexdemon_visit_incubi)
 | 
			
		||||
                {
 | 
			
		||||
 | 
			
		||||
                }
 | 
			
		||||
                if ((Rand.Bool && RJW_GenesSettings.rjw_genes_sexdemon_visit_succubi) || !RJW_GenesSettings.rjw_genes_sexdemon_visit_incubi)
 | 
			
		||||
                {
 | 
			
		||||
                    pawnKindDef = PawnKindDef.Named("rjw_genes_succubus");
 | 
			
		||||
                    gender = Gender.Female;
 | 
			
		||||
                }
 | 
			
		||||
                else
 | 
			
		||||
                {
 | 
			
		||||
                    pawnKindDef = PawnKindDef.Named("rjw_genes_incubus");
 | 
			
		||||
                    gender = Gender.Male;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                //Spawn succubus at pawn
 | 
			
		||||
                Pawn sexdemon = PawnGenerator.GeneratePawn(new PawnGenerationRequest(pawnKindDef, 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, gender, null, null, null, null, false, false, false, false, null, null, null, null, null, 0f,
 | 
			
		||||
                    DevelopmentalStage.Adult, null, null, null, false));
 | 
			
		||||
                sexdemon.SetFaction(null, null);
 | 
			
		||||
                GenSpawn.Spawn(sexdemon, loc, map, WipeMode.Vanish);
 | 
			
		||||
                List<Pawn> sexdemons = new List<Pawn> { sexdemon };
 | 
			
		||||
                new_sexdemons.Add(sexdemon);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
                LordMaker.MakeNewLord(Faction.OfPlayer, this.CreateLordJob(parms, sexdemon, victim), map, sexdemons);
 | 
			
		||||
 | 
			
		||||
                //Make succubus rape victim.
 | 
			
		||||
                if (RJWSettings.rape_enabled)
 | 
			
		||||
                {
 | 
			
		||||
                    //follow rjw rules
 | 
			
		||||
                    if (SexAppraiser.would_fuck(sexdemon,victim) > 0f)
 | 
			
		||||
                    {
 | 
			
		||||
                        sexdemon.pather.StopDead();
 | 
			
		||||
                        sexdemon.jobs.StopAll();
 | 
			
		||||
                        Job newJob = JobMaker.MakeJob(xxx.RapeRandom, victim);
 | 
			
		||||
                        sexdemon.jobs.StartJob(newJob, JobCondition.InterruptForced, null, false, true, null, null, false, false, null, false, true);
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            Find.LetterStack.ReceiveLetter("RJW_nymph_incident_join_title".Translate(), "RJW_nymph_incident_join_description".Translate(), LetterDefOf.PositiveEvent, new_sexdemons, null, null, null, null);
 | 
			
		||||
            //base.SendStandardLetter(baseLetterLabel, baseLetterText, this.def.letterDef, parms, succubus, Array.Empty<NamedArgument>());
 | 
			
		||||
 | 
			
		||||
            return true;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -34,8 +34,9 @@ namespace RJW_Genes
 | 
			
		|||
			toil.socialMode = RandomSocialMode.Off;
 | 
			
		||||
			yield return toil;
 | 
			
		||||
			yield return this.InteractToil();
 | 
			
		||||
			Toil toil1 = Toils_General.Wait(600, TargetIndex.A);
 | 
			
		||||
			Toil toil1 = Toils_General.Wait(300, TargetIndex.A);
 | 
			
		||||
			toil1.socialMode = RandomSocialMode.Off;
 | 
			
		||||
			yield return toil1;
 | 
			
		||||
			yield break;
 | 
			
		||||
		}
 | 
			
		||||
		private Toil InteractToil()
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -41,7 +41,6 @@ namespace RJW_Genes
 | 
			
		|||
			yield break;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		// Token: 0x06000420 RID: 1056 RVA: 0x00024190 File Offset: 0x00022390
 | 
			
		||||
		private Toil MakeSexToil()
 | 
			
		||||
		{
 | 
			
		||||
			Toil toil = new Toil();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,7 +14,7 @@ namespace RJW_Genes
 | 
			
		|||
		protected override Job TryGiveJob(Pawn pawn)
 | 
			
		||||
		{
 | 
			
		||||
			Pawn target = pawn.mindState.duty.focus.Pawn;
 | 
			
		||||
			if (pawn.CanReach(target, PathEndMode.InteractionCell, Danger.Deadly))
 | 
			
		||||
			if (pawn.CanReach(target, PathEndMode.InteractionCell, Danger.Deadly) && !target.jobs.curDriver.asleep)
 | 
			
		||||
            {
 | 
			
		||||
				return JobMaker.MakeJob(JobDefOf.rjw_genes_flirt, target);
 | 
			
		||||
			}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,9 +4,12 @@ using System.Linq;
 | 
			
		|||
using System.Text;
 | 
			
		||||
using System.Threading.Tasks;
 | 
			
		||||
using rjw;
 | 
			
		||||
using RJWSexperience;
 | 
			
		||||
using RimWorld;
 | 
			
		||||
using Verse;
 | 
			
		||||
using Verse.AI;
 | 
			
		||||
using Verse.AI.Group;
 | 
			
		||||
using UnityEngine;
 | 
			
		||||
namespace RJW_Genes
 | 
			
		||||
{
 | 
			
		||||
    public class JobGiver_TryQuickieWith : ThinkNode_JobGiver
 | 
			
		||||
| 
						 | 
				
			
			@ -20,13 +23,29 @@ namespace RJW_Genes
 | 
			
		|||
			//can reserve eachother
 | 
			
		||||
			if (pawn.CanReserveAndReach(target, PathEndMode.InteractionCell, Danger.Some) && target.CanReserve(pawn, 1, 0, null, false))				
 | 
			
		||||
			{
 | 
			
		||||
				//target is not busy
 | 
			
		||||
				//Dont interrupt player
 | 
			
		||||
				if (!(((jobs != null) ? jobs.curJob : null) != null && jobs.curJob.playerForced))
 | 
			
		||||
                {
 | 
			
		||||
					float willingness = TargetWillingness(pawn, target);
 | 
			
		||||
					if (Rand.Chance(willingness))
 | 
			
		||||
                    {
 | 
			
		||||
						return JobMaker.MakeJob(xxx.quick_sex, target);
 | 
			
		||||
						Job newJob =JobMaker.MakeJob(xxx.quick_sex, target);
 | 
			
		||||
						
 | 
			
		||||
						//Pawn joins faction when lordJob ends instead of leaving
 | 
			
		||||
						//in the future determine the chance of this another way
 | 
			
		||||
						if (Rand.Chance(JoinChance(pawn, target)))
 | 
			
		||||
                        {
 | 
			
		||||
							Lord lord = pawn.GetLord();
 | 
			
		||||
							LordJob_SuccubusVisit lordJob = lord == null? null : lord.LordJob as LordJob_SuccubusVisit;
 | 
			
		||||
							if (lordJob != null)
 | 
			
		||||
                            {
 | 
			
		||||
								if (!lordJob.colonyJoiners.Contains(pawn))
 | 
			
		||||
                                {
 | 
			
		||||
									lordJob.colonyJoiners.Add(pawn);
 | 
			
		||||
                                }
 | 
			
		||||
                            }
 | 
			
		||||
						}
 | 
			
		||||
						return newJob;
 | 
			
		||||
					}
 | 
			
		||||
					else
 | 
			
		||||
                    {
 | 
			
		||||
| 
						 | 
				
			
			@ -40,7 +59,7 @@ namespace RJW_Genes
 | 
			
		|||
                {
 | 
			
		||||
					if (RJWSettings.DebugLogJoinInBed) //change this when we have our own settigns
 | 
			
		||||
					{
 | 
			
		||||
						ModLog.Message(string.Format(" find_pawn_to_fuck({0}): lover has important job ({1}), skipping", pawn_name, target.jobs.curJob.def));
 | 
			
		||||
						//ModLog.Message(string.Format(" find_pawn_to_fuck({0}): lover has important job ({1}), skipping", pawn_name, target.jobs.curJob.def));
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
| 
						 | 
				
			
			@ -80,7 +99,7 @@ namespace RJW_Genes
 | 
			
		|||
						{
 | 
			
		||||
							ModLog.Message(" find_partner(" + pawn_name + "): I interested in banging but that's cheating");
 | 
			
		||||
						}
 | 
			
		||||
						//Succubus has a small chance to seduce even if target is in relationship, maybe setting like succubus can homewreck
 | 
			
		||||
						//Succubus has a small chance to seduce even if target is in relationship
 | 
			
		||||
						willingness *= 0.1f;
 | 
			
		||||
					}
 | 
			
		||||
                    else
 | 
			
		||||
| 
						 | 
				
			
			@ -95,5 +114,75 @@ namespace RJW_Genes
 | 
			
		|||
			}
 | 
			
		||||
			return willingness;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
		public static float JoinChance(Pawn pawn ,Pawn target)
 | 
			
		||||
        {
 | 
			
		||||
 | 
			
		||||
			float chance = 0.1f;
 | 
			
		||||
 | 
			
		||||
			//Sex satisfaction, how good the target is at sex
 | 
			
		||||
			chance *= xxx.get_sex_satisfaction(target); 
 | 
			
		||||
			
 | 
			
		||||
			//Succubus mood
 | 
			
		||||
			if (pawn.needs != null && pawn.needs.mood != null)
 | 
			
		||||
            {
 | 
			
		||||
				chance *= pawn.needs.mood.CurLevelPercentage + 0.5f; 
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			//Size of genitals
 | 
			
		||||
			bool size_matters = true; //To be placed in modsettings
 | 
			
		||||
			if (size_matters)
 | 
			
		||||
            {
 | 
			
		||||
				//The larger the penis to greater the chance
 | 
			
		||||
				if (RelationsUtility.AttractedToGender(pawn, Gender.Male))
 | 
			
		||||
				{
 | 
			
		||||
					chance *= GetGenitalSize(target, true) + 0.5f;
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				//The tighter the vagine the greater the chance, a size above 1 is considered as 1
 | 
			
		||||
				if (RelationsUtility.AttractedToGender(pawn, Gender.Female))
 | 
			
		||||
				{
 | 
			
		||||
					chance *= 1f - Mathf.Min(GetGenitalSize(target, false),1f) + 0.5f;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			//Sex ability from sexperience
 | 
			
		||||
			if (ModsConfig.IsActive("rjw.sexperience"))
 | 
			
		||||
            {
 | 
			
		||||
				chance *= RJWSexperience.PawnExtensions.GetSexStat(pawn);
 | 
			
		||||
            }
 | 
			
		||||
			return Mathf.Max(chance,0f);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
		//Gets the size of the largest penis or the tightest vagina
 | 
			
		||||
		public static float GetGenitalSize(Pawn pawn, bool penis_else_vagina)
 | 
			
		||||
        {
 | 
			
		||||
			List<Hediff> genitals = rjw.PawnExtensions.GetGenitalsList(pawn);
 | 
			
		||||
			if(!genitals.NullOrEmpty())
 | 
			
		||||
            {
 | 
			
		||||
				if (penis_else_vagina)
 | 
			
		||||
				{
 | 
			
		||||
					List<Hediff> penises = genitals.Where(genital => Genital_Helper.is_penis(genital)).ToList();
 | 
			
		||||
					{
 | 
			
		||||
						if (!penises.NullOrEmpty())
 | 
			
		||||
						{
 | 
			
		||||
							return penises.Max(genital => genital.Severity);
 | 
			
		||||
						}
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
				else
 | 
			
		||||
                {
 | 
			
		||||
					List<Hediff> vaginas = genitals.Where(genital => Genital_Helper.is_vagina(genital)).ToList();
 | 
			
		||||
					{
 | 
			
		||||
						if (!vaginas.NullOrEmpty())
 | 
			
		||||
						{
 | 
			
		||||
							return vaginas.Min(genital => genital.Severity);
 | 
			
		||||
						}
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			return 0f;
 | 
			
		||||
			
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -7,6 +7,7 @@ using Verse;
 | 
			
		|||
using Verse.AI;
 | 
			
		||||
using Verse.AI.Group;
 | 
			
		||||
using RimWorld;
 | 
			
		||||
using rjw;
 | 
			
		||||
namespace RJW_Genes
 | 
			
		||||
{
 | 
			
		||||
    //Based on LordJob_VisitColony
 | 
			
		||||
| 
						 | 
				
			
			@ -52,8 +53,7 @@ namespace RJW_Genes
 | 
			
		|||
                tickLimit = Rand.Range(60000, 180000); //~1-3 days
 | 
			
		||||
            }
 | 
			
		||||
            transition1.AddTrigger(new Trigger_TicksPassed(tickLimit));
 | 
			
		||||
 | 
			
		||||
            transition1.AddPreAction(new TransitionAction_Message("SuccubusLeaving".Translate(), null, 1f));
 | 
			
		||||
            transition1.AddPreAction(new TransitionAction_Custom(new Action(this.SuccubiLeave))); //Join or leave colony
 | 
			
		||||
            stateGraph.AddTransition(transition1);
 | 
			
		||||
 | 
			
		||||
            //If they become hostile
 | 
			
		||||
| 
						 | 
				
			
			@ -84,7 +84,26 @@ namespace RJW_Genes
 | 
			
		|||
            Scribe_Values.Look<int?>(ref this.durationTicks, "durationTicks", null, false);
 | 
			
		||||
            Scribe_References.Look<Pawn>(ref this.target, "target", false);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void SuccubiLeave()
 | 
			
		||||
        {
 | 
			
		||||
            foreach (Pawn pawn in this.lord.ownedPawns)
 | 
			
		||||
            {
 | 
			
		||||
                if(colonyJoiners.Contains(pawn))
 | 
			
		||||
                {
 | 
			
		||||
                    RecruitUtility.Recruit(pawn, Faction.OfPlayer);
 | 
			
		||||
                    Find.LetterStack.ReceiveLetter("Guest Joins", string.Format("{0} enjoys it here and has decided to stay", xxx.get_pawnname(pawn)), LetterDefOf.PositiveEvent, pawn, null, null, null, null);
 | 
			
		||||
                }
 | 
			
		||||
                else
 | 
			
		||||
                {
 | 
			
		||||
                    Messages.Message("SuccubusLeaving".Translate(xxx.get_pawnname(pawn)), pawn, MessageTypeDefOf.NeutralEvent, true);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public Pawn target;
 | 
			
		||||
        private int? durationTicks;
 | 
			
		||||
        public List<Pawn> colonyJoiners = new List<Pawn>();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										56
									
								
								Source/RJW_GenesSettings.cs
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								Source/RJW_GenesSettings.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 UnityEngine;
 | 
			
		||||
namespace RJW_Genes
 | 
			
		||||
{
 | 
			
		||||
    public class RJW_GenesSettings : ModSettings
 | 
			
		||||
    {
 | 
			
		||||
        public static void DoWindowContents(Rect inRect)
 | 
			
		||||
        {   
 | 
			
		||||
            Rect outRect = new Rect(0f, 30f, inRect.width, inRect.height - 30f);
 | 
			
		||||
            Rect rect = new Rect(0f, 0f, inRect.width - 16f, inRect.height + 300f);
 | 
			
		||||
            //Widgets.BeginScrollView(outRect, ref RJWSettings.scrollPosition, rect, true);
 | 
			
		||||
            Listing_Standard listing_Standard = new Listing_Standard();
 | 
			
		||||
            listing_Standard.maxOneColumn = true;
 | 
			
		||||
            listing_Standard.ColumnWidth = rect.width / 2.05f;
 | 
			
		||||
            listing_Standard.Begin(rect);
 | 
			
		||||
            listing_Standard.Gap(30);
 | 
			
		||||
            listing_Standard.CheckboxLabeled("Sexdemon Visits", ref rjw_genes_sexdemon_visit, "If enabled, incubi and succubi can spawn in through an event.", 0f, 1f);
 | 
			
		||||
            if (rjw_genes_sexdemon_visit)
 | 
			
		||||
            {
 | 
			
		||||
                listing_Standard.Gap(3f);
 | 
			
		||||
                listing_Standard.CheckboxLabeled("  Size matters", ref rjw_genes_sexdemon_join_size_matters, "Incubi and succubi will consider size/tightness of partners genital for deciding if they want to join", 0f, 1f);
 | 
			
		||||
                listing_Standard.Gap(3f);
 | 
			
		||||
                listing_Standard.CheckboxLabeled("  Sexdemon groups", ref rjw_genes_sexdemon_visit_groups, "Multiple sexdemons can spawn during a event", 0f, 1f);
 | 
			
		||||
                listing_Standard.Gap(3f);
 | 
			
		||||
                listing_Standard.CheckboxLabeled("  Succubi", ref rjw_genes_sexdemon_visit_succubi, "Allow incubi to spawn through this even", 0f, 1f);
 | 
			
		||||
                listing_Standard.Gap(3f);
 | 
			
		||||
                listing_Standard.CheckboxLabeled("  Incubi", ref rjw_genes_sexdemon_visit_incubi, "Allow incubi to spawn through this even", 0f, 1f);
 | 
			
		||||
 | 
			
		||||
            }
 | 
			
		||||
            //listing_Standard.CheckboxLabeled("sexfrenzy", ref sexfrenzy, "disable the effects", 0f, 1f);
 | 
			
		||||
            listing_Standard.Gap(10f);
 | 
			
		||||
            listing_Standard.End();
 | 
			
		||||
        }
 | 
			
		||||
        public override void ExposeData()
 | 
			
		||||
        {
 | 
			
		||||
            base.ExposeData();
 | 
			
		||||
            Scribe_Values.Look<bool>(ref RJW_GenesSettings.rjw_genes_sexdemon_visit, "rjw_genes_sexdemon_visit", RJW_GenesSettings.rjw_genes_sexdemon_visit, true);
 | 
			
		||||
            Scribe_Values.Look<bool>(ref RJW_GenesSettings.rjw_genes_sexdemon_join_size_matters, "rjw_genes_sexdemon_join_size_matters", RJW_GenesSettings.rjw_genes_sexdemon_join_size_matters, true);
 | 
			
		||||
            Scribe_Values.Look<bool>(ref RJW_GenesSettings.rjw_genes_sexdemon_visit_groups, "rjw_genes_sexdemon_groups", RJW_GenesSettings.rjw_genes_sexdemon_visit_groups, true);
 | 
			
		||||
            Scribe_Values.Look<bool>(ref RJW_GenesSettings.rjw_genes_sexdemon_visit_succubi, "rjw_genes_sexdemon_succubi", RJW_GenesSettings.rjw_genes_sexdemon_visit_succubi, true);
 | 
			
		||||
            Scribe_Values.Look<bool>(ref RJW_GenesSettings.rjw_genes_sexdemon_visit_incubi, "rjw_genes_sexdemon_incubi", RJW_GenesSettings.rjw_genes_sexdemon_visit_incubi, true);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public static bool rjw_genes_sexdemon_visit = true;
 | 
			
		||||
        public static bool rjw_genes_sexdemon_join_size_matters = true;
 | 
			
		||||
        public static bool rjw_genes_sexdemon_visit_groups = true;
 | 
			
		||||
        public static bool rjw_genes_sexdemon_visit_succubi = true;
 | 
			
		||||
        public static bool rjw_genes_sexdemon_visit_incubi = true;
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										26
									
								
								Source/RJW_GenesSettingsControllercs.cs
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								Source/RJW_GenesSettingsControllercs.cs
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,26 @@
 | 
			
		|||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using System.Text;
 | 
			
		||||
using System.Threading.Tasks;
 | 
			
		||||
using Verse;
 | 
			
		||||
using UnityEngine;
 | 
			
		||||
namespace RJW_Genes
 | 
			
		||||
{
 | 
			
		||||
    public class RJW_GenesSettingsControllercs : Mod
 | 
			
		||||
    {
 | 
			
		||||
        public RJW_GenesSettingsControllercs(ModContentPack content) : base(content)
 | 
			
		||||
        {
 | 
			
		||||
            base.GetSettings<RJW_GenesSettings>();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public override string SettingsCategory()
 | 
			
		||||
        {
 | 
			
		||||
            return "RJW Genes";
 | 
			
		||||
        }
 | 
			
		||||
        public override void DoSettingsWindowContents(Rect inRect)
 | 
			
		||||
        {
 | 
			
		||||
            RJW_GenesSettings.DoWindowContents(inRect);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -38,6 +38,10 @@
 | 
			
		|||
      <HintPath>..\..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\common\RimWorld\Mods\rjw-master\1.4\Assemblies\RJW.dll</HintPath>
 | 
			
		||||
      <Private>False</Private>
 | 
			
		||||
    </Reference>
 | 
			
		||||
    <Reference Include="RJWSexperience">
 | 
			
		||||
      <HintPath>..\..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\common\RimWorld\Mods\RJW-Sexperience-master\1.4\Assemblies\RJWSexperience.dll</HintPath>
 | 
			
		||||
      <Private>False</Private>
 | 
			
		||||
    </Reference>
 | 
			
		||||
    <Reference Include="System" />
 | 
			
		||||
    <Reference Include="System.Core" />
 | 
			
		||||
    <Reference Include="System.Xml.Linq" />
 | 
			
		||||
| 
						 | 
				
			
			@ -175,6 +179,8 @@
 | 
			
		|||
    <Compile Include="JobDefOf.cs" />
 | 
			
		||||
    <Compile Include="Properties\AssemblyInfo.cs" />
 | 
			
		||||
    <Compile Include="RJW_Genes.cs" />
 | 
			
		||||
    <Compile Include="RJW_GenesSettings.cs" />
 | 
			
		||||
    <Compile Include="RJW_GenesSettingsControllercs.cs" />
 | 
			
		||||
    <Compile Include="ThoughtDefOf.cs" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue