diff --git a/Common/Assemblies/Rjw-Genes.dll b/Common/Assemblies/Rjw-Genes.dll index 0738b37..a28719c 100644 Binary files a/Common/Assemblies/Rjw-Genes.dll and b/Common/Assemblies/Rjw-Genes.dll differ diff --git a/Common/Defs/DutyDefs/Duties_Succubus.xml b/Common/Defs/DutyDefs/Duties_Succubus.xml index f441c6f..bd67a24 100644 --- a/Common/Defs/DutyDefs/Duties_Succubus.xml +++ b/Common/Defs/DutyDefs/Duties_Succubus.xml @@ -40,10 +40,9 @@
  • - -
  • +
  • -
  • +
  • @@ -56,12 +55,11 @@
    - +
  • -
  • - 5 -
  • + +
  • diff --git a/Common/Defs/Genes/GeneDefs_Cosmetic.xml b/Common/Defs/Genes/GeneDefs_Cosmetic.xml index 54dfe41..a5cd0ca 100644 --- a/Common/Defs/Genes/GeneDefs_Cosmetic.xml +++ b/Common/Defs/Genes/GeneDefs_Cosmetic.xml @@ -25,6 +25,7 @@ rjw_genes_flight 1 + -1 Things/Pawn/Humanlike/BodyAttachments/rjw_genes_Succubus_Wings/Succubus_Wings Skin diff --git a/Common/Defs/IncidentsDefs/Incidents_Succubus.xml b/Common/Defs/IncidentsDefs/Incidents_LifeForce.xml similarity index 100% rename from Common/Defs/IncidentsDefs/Incidents_Succubus.xml rename to Common/Defs/IncidentsDefs/Incidents_LifeForce.xml diff --git a/Common/Defs/InteractionDef/Rape/Rape_SuccubusTail.xml b/Common/Defs/InteractionDef/Rape/Rape_SuccubusTail.xml index be8905c..1fa8d91 100644 --- a/Common/Defs/InteractionDef/Rape/Rape_SuccubusTail.xml +++ b/Common/Defs/InteractionDef/Rape/Rape_SuccubusTail.xml @@ -1,7 +1,7 @@ - + Rape_SuccubusTail_Tailjob @@ -39,7 +39,7 @@ - + Rape_SuccubusTail_Vaginal @@ -76,7 +76,7 @@ - + Rape_SuccubusTail_Anal @@ -114,7 +114,7 @@ - + Rape_SuccubusTail_Envelop diff --git a/Common/Defs/InteractionDef/Rape/Reverse/Rape_Reverse_SuccubusTail.xml b/Common/Defs/InteractionDef/Rape/Reverse/Rape_Reverse_SuccubusTail.xml index ce679d6..a600908 100644 --- a/Common/Defs/InteractionDef/Rape/Reverse/Rape_Reverse_SuccubusTail.xml +++ b/Common/Defs/InteractionDef/Rape/Reverse/Rape_Reverse_SuccubusTail.xml @@ -1,7 +1,7 @@ - + Rape_SuccubusTail_Reverse_Tailjob @@ -40,7 +40,7 @@ - + Rape_SuccubusTail_Reverse_Vaginal @@ -79,7 +79,7 @@ - + Rape_SuccubusTail_Reverse_Anal @@ -119,7 +119,7 @@ - + Rape_SuccubusTail_Reverse_Envelop diff --git a/Common/Defs/PawnKindDefs/PawnKind_Succubus.xml b/Common/Defs/PawnKindDefs/PawnKind_LifeForce.xml similarity index 50% rename from Common/Defs/PawnKindDefs/PawnKind_Succubus.xml rename to Common/Defs/PawnKindDefs/PawnKind_LifeForce.xml index 7ac7a42..9d48cdc 100644 --- a/Common/Defs/PawnKindDefs/PawnKind_Succubus.xml +++ b/Common/Defs/PawnKindDefs/PawnKind_LifeForce.xml @@ -42,4 +42,46 @@ 2~4 28~44 + + + rjw_genes_incubus + + 50 + Human + + + 999 + + + 0.5 + false + 18 + 27 + Poor + 0.0 + false + + 0.3 + 0.9 + + true + +
  • Tribal
  • + + + 0 + 0 + + 0 + + 0 + 0 + + +
  • Poor
  • +
    + 0.0 + 2~4 + 28~44 + \ No newline at end of file diff --git a/Common/Defs/Xenotypes/Succubus.xml b/Common/Defs/Xenotypes/Succubus.xml deleted file mode 100644 index b3967c6..0000000 --- a/Common/Defs/Xenotypes/Succubus.xml +++ /dev/null @@ -1,52 +0,0 @@ - - - - - rjw_genes_succubus - - Succubi are strongly enhanced xenohumans. Powered by archites, their abilities go far beyond normal genetic enhancements. These overnaturally beautiful creatures strive parasitically on the Fertilin found in semen. - Succubi are beautiful and extremely hungry Xenohumans. They strive on having sex and extracting their victims life-force through this. - UI/Icons/Xenotypes/Sanguophage - PawnBecameSanguophage - 0.5 - 0.1~140 - 1 - -1000 - 0.005 - true - - 0.02 - 0.02 - 0.02 - 0.02 - 0.02 - 0.02 - - -
  • rjw_genes_bisexual
  • -
  • rjw_genes_hypersexual
  • -
  • rjw_genes_female_only
  • -
  • rjw_genes_lifeforce
  • -
  • rjw_genes_lifeforce_drain
  • -
  • rjw_genes_vaginal_absorber
  • -
  • rjw_genes_anal_absorber
  • - -
  • rjw_genes_paralysingkiss
  • -
  • rjw_genes_seduce
  • -
  • rjw_genes_elasticity
  • -
  • rjw_genes_succubus_wings
  • -
  • rjw_genes_succubus_tail
  • -
  • rjw_genes_aphrodisiac_pheromones
  • - -
  • Beauty_Pretty
  • -
  • MoveSpeed_Quick
  • -
  • Robust
  • -
  • UVSensitivity_Intense
  • -
  • AptitudeStrong_Social
  • -
  • Ears_Pointed
  • -
  • Headbone_MiniHorns
  • -
  • Skin_Purple
  • -
    -
    - -
    \ No newline at end of file diff --git a/Common/Defs/Xenotypes/Xenotype_Lifeforce.xml b/Common/Defs/Xenotypes/Xenotype_Lifeforce.xml new file mode 100644 index 0000000..b1cba40 --- /dev/null +++ b/Common/Defs/Xenotypes/Xenotype_Lifeforce.xml @@ -0,0 +1,96 @@ + + + + + rjw_genes_succubus + + Succubi are strongly enhanced xenohumans. These overnaturally beautiful creatures strive parasitically on the Fertilin found in semen. + Succubi are beautiful and extremely hungry Xenohumans. They strive on having sex and extracting their victims life-force through this. + UI/Icons/Xenotypes/Sanguophage + PawnBecameSanguophage + 0.5 + 0.1~140 + 1 + -1000 + 0.005 + true + + 0.02 + 0.02 + 0.02 + 0.02 + 0.02 + 0.02 + + +
  • rjw_genes_bisexual
  • +
  • rjw_genes_hypersexual
  • +
  • rjw_genes_female_only
  • +
  • rjw_genes_lifeforce
  • +
  • rjw_genes_lifeforce_drain
  • +
  • rjw_genes_vaginal_absorber
  • +
  • rjw_genes_anal_absorber
  • + +
  • rjw_genes_paralysingkiss
  • +
  • rjw_genes_seduce
  • +
  • rjw_genes_elasticity
  • +
  • rjw_genes_succubus_wings
  • +
  • rjw_genes_succubus_tail
  • +
  • rjw_genes_aphrodisiac_pheromones
  • + +
  • Beauty_Pretty
  • +
  • MoveSpeed_Quick
  • +
  • Robust
  • +
  • UVSensitivity_Intense
  • +
  • AptitudeStrong_Social
  • +
  • Ears_Pointed
  • +
  • Headbone_MiniHorns
  • +
  • Skin_Purple
  • +
    +
    + + + rjw_genes_incubus + + Incubi are strongly enhanced xenohumans. These overnaturally beautiful creatures strive parasitically on the Fertilin found in semen. + Incubi are beautiful and extremely hungry Xenohumans. They strive on having sex and extracting their victims life-force through this. + UI/Icons/Xenotypes/Sanguophage + PawnBecameSanguophage + 0.5 + 0.1~140 + 1 + -1000 + 0.005 + true + + 0.02 + 0.02 + 0.02 + 0.02 + 0.02 + 0.02 + + +
  • rjw_genes_hypersexual
  • +
  • rjw_genes_male_only
  • +
  • rjw_genes_lifeforce
  • +
  • rjw_genes_lifeforce_drain
  • +
  • rjw_genes_drainer
  • + +
  • rjw_genes_seduce
  • +
  • rjw_genes_succubus_wings
  • +
  • rjw_genes_succubus_tail
  • +
  • rjw_genes_aphrodisiac_pheromones
  • + +
  • Beauty_Pretty
  • +
  • MoveSpeed_Quick
  • +
  • Robust
  • +
  • UVSensitivity_Intense
  • +
  • AptitudeStrong_Intellectual
  • +
  • Ears_Pointed
  • +
  • Headbone_MiniHorns
  • +
  • Skin_Purple
  • +
    +
    + +
    \ No newline at end of file diff --git a/Common/Languages/English/Keyed/Lifeforce.xml b/Common/Languages/English/Keyed/Lifeforce.xml index ddd1344..7f6c426 100644 --- a/Common/Languages/English/Keyed/Lifeforce.xml +++ b/Common/Languages/English/Keyed/Lifeforce.xml @@ -10,6 +10,6 @@ - The succubus has fed enough on your colonists and will now leave. + {0} has fed enough on your colonists and will now leave. \ No newline at end of file diff --git a/Source/First.cs b/Source/First.cs index e322c58..101d3cc 100644 --- a/Source/First.cs +++ b/Source/First.cs @@ -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 partPreferenceRules = Unprivater.GetProtectedValue>("_partKindUsageRules", typeof(PartPreferenceDetectorService)); partPreferenceRules.Add(new Interactions.GenesPartKindUsageRule()); diff --git a/Source/Genes/Life_Force/IncidentWorker_SuccubusDreamVisit.cs b/Source/Genes/Life_Force/IncidentWorker_SuccubusDreamVisit.cs index 82522fb..3b9776b 100644 --- a/Source/Genes/Life_Force/IncidentWorker_SuccubusDreamVisit.cs +++ b/Source/Genes/Life_Force/IncidentWorker_SuccubusDreamVisit.cs @@ -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 list = new List {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 new_sexdemons = new List(); + 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 sexdemons = new List { 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()); return true; diff --git a/Source/Genes/Life_Force/JobDrivers/JobDriver_Flirt.cs b/Source/Genes/Life_Force/JobDrivers/JobDriver_Flirt.cs index ad61bb0..337a9b2 100644 --- a/Source/Genes/Life_Force/JobDrivers/JobDriver_Flirt.cs +++ b/Source/Genes/Life_Force/JobDrivers/JobDriver_Flirt.cs @@ -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() diff --git a/Source/Genes/Life_Force/JobDrivers/JobDriver_SexOnSpotReceiver.cs b/Source/Genes/Life_Force/JobDrivers/JobDriver_SexOnSpotReceiver.cs index 6399e43..135b231 100644 --- a/Source/Genes/Life_Force/JobDrivers/JobDriver_SexOnSpotReceiver.cs +++ b/Source/Genes/Life_Force/JobDrivers/JobDriver_SexOnSpotReceiver.cs @@ -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(); diff --git a/Source/Genes/Life_Force/JobGiver_Flirt.cs b/Source/Genes/Life_Force/JobGiver_Flirt.cs index ac08c6b..a629e0e 100644 --- a/Source/Genes/Life_Force/JobGiver_Flirt.cs +++ b/Source/Genes/Life_Force/JobGiver_Flirt.cs @@ -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); } diff --git a/Source/Genes/Life_Force/JobGiver_TryQuickieWith.cs b/Source/Genes/Life_Force/JobGiver_TryQuickieWith.cs index 854d906..22fcb01 100644 --- a/Source/Genes/Life_Force/JobGiver_TryQuickieWith.cs +++ b/Source/Genes/Life_Force/JobGiver_TryQuickieWith.cs @@ -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 genitals = rjw.PawnExtensions.GetGenitalsList(pawn); + if(!genitals.NullOrEmpty()) + { + if (penis_else_vagina) + { + List penises = genitals.Where(genital => Genital_Helper.is_penis(genital)).ToList(); + { + if (!penises.NullOrEmpty()) + { + return penises.Max(genital => genital.Severity); + } + } + } + else + { + List vaginas = genitals.Where(genital => Genital_Helper.is_vagina(genital)).ToList(); + { + if (!vaginas.NullOrEmpty()) + { + return vaginas.Min(genital => genital.Severity); + } + } + } + } + return 0f; + + } } } diff --git a/Source/Genes/Life_Force/LordJob_SuccubusVisit.cs b/Source/Genes/Life_Force/LordJob_SuccubusVisit.cs index 8991fc5..388a133 100644 --- a/Source/Genes/Life_Force/LordJob_SuccubusVisit.cs +++ b/Source/Genes/Life_Force/LordJob_SuccubusVisit.cs @@ -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(ref this.durationTicks, "durationTicks", null, false); Scribe_References.Look(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 colonyJoiners = new List(); } } diff --git a/Source/RJW_GenesSettings.cs b/Source/RJW_GenesSettings.cs new file mode 100644 index 0000000..57e7249 --- /dev/null +++ b/Source/RJW_GenesSettings.cs @@ -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(ref RJW_GenesSettings.rjw_genes_sexdemon_visit, "rjw_genes_sexdemon_visit", RJW_GenesSettings.rjw_genes_sexdemon_visit, true); + Scribe_Values.Look(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(ref RJW_GenesSettings.rjw_genes_sexdemon_visit_groups, "rjw_genes_sexdemon_groups", RJW_GenesSettings.rjw_genes_sexdemon_visit_groups, true); + Scribe_Values.Look(ref RJW_GenesSettings.rjw_genes_sexdemon_visit_succubi, "rjw_genes_sexdemon_succubi", RJW_GenesSettings.rjw_genes_sexdemon_visit_succubi, true); + Scribe_Values.Look(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; + + } +} diff --git a/Source/RJW_GenesSettingsControllercs.cs b/Source/RJW_GenesSettingsControllercs.cs new file mode 100644 index 0000000..a1f0fef --- /dev/null +++ b/Source/RJW_GenesSettingsControllercs.cs @@ -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(); + } + + public override string SettingsCategory() + { + return "RJW Genes"; + } + public override void DoSettingsWindowContents(Rect inRect) + { + RJW_GenesSettings.DoWindowContents(inRect); + } + } +} diff --git a/Source/Rjw-Genes.csproj b/Source/Rjw-Genes.csproj index f4ab208..44d8252 100644 --- a/Source/Rjw-Genes.csproj +++ b/Source/Rjw-Genes.csproj @@ -38,6 +38,10 @@ ..\..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\common\RimWorld\Mods\rjw-master\1.4\Assemblies\RJW.dll False + + ..\..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\common\RimWorld\Mods\RJW-Sexperience-master\1.4\Assemblies\RJWSexperience.dll + False + @@ -175,6 +179,8 @@ + +