mirror of
https://gitgud.io/c0ffeeeeeeee/rjw-toys-and-masturbation.git
synced 2024-08-15 00:43:44 +00:00
updates for 1.3
This commit is contained in:
parent
da8939c4b8
commit
00e8d5cf4e
8 changed files with 58 additions and 19 deletions
|
@ -5,8 +5,7 @@
|
||||||
<packageId>c0ffee.SexToysMasturbation</packageId>
|
<packageId>c0ffee.SexToysMasturbation</packageId>
|
||||||
<author>c0ffee</author>
|
<author>c0ffee</author>
|
||||||
<supportedVersions>
|
<supportedVersions>
|
||||||
<li>1.1</li>
|
<li>1.3</li>
|
||||||
<li>1.2</li>
|
|
||||||
</supportedVersions>
|
</supportedVersions>
|
||||||
|
|
||||||
<modDependencies>
|
<modDependencies>
|
||||||
|
|
Binary file not shown.
|
@ -41,7 +41,7 @@
|
||||||
<Private>False</Private>
|
<Private>False</Private>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="RJW">
|
<Reference Include="RJW">
|
||||||
<HintPath>..\RJW\1.1\Assemblies\RJW.dll</HintPath>
|
<HintPath>..\rjw\1.3\Assemblies\RJW.dll</HintPath>
|
||||||
<Private>False</Private>
|
<Private>False</Private>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System" />
|
<Reference Include="System" />
|
||||||
|
@ -66,6 +66,7 @@
|
||||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
<Compile Include="Source\JobDrivers\JobDriver_MasturbateWithToy.cs" />
|
<Compile Include="Source\JobDrivers\JobDriver_MasturbateWithToy.cs" />
|
||||||
<Compile Include="Source\JobGivers\JobGiver_MasturbateWithToy.cs" />
|
<Compile Include="Source\JobGivers\JobGiver_MasturbateWithToy.cs" />
|
||||||
|
<Compile Include="Source\Patches\HarmonyPatch_JobDriver_Masturbate.cs" />
|
||||||
<Compile Include="Source\ThingComps\CompProperties_SexToy.cs" />
|
<Compile Include="Source\ThingComps\CompProperties_SexToy.cs" />
|
||||||
<Compile Include="Source\ThingComps\CompSexToy.cs" />
|
<Compile Include="Source\ThingComps\CompSexToy.cs" />
|
||||||
<Compile Include="Source\Utils\SexToyUtility.cs" />
|
<Compile Include="Source\Utils\SexToyUtility.cs" />
|
||||||
|
|
|
@ -9,16 +9,18 @@ using rjw;
|
||||||
using Verse.AI;
|
using Verse.AI;
|
||||||
|
|
||||||
namespace RJW_ToysAndMasturbation {
|
namespace RJW_ToysAndMasturbation {
|
||||||
class JobDriver_MasturbateWithToy : JobDriver_SexBaseInitiator {
|
public class JobDriver_MasturbateWithToy : JobDriver_SexBaseInitiator {
|
||||||
|
|
||||||
public IntVec3 cell => (IntVec3)job.GetTarget(iCell);
|
public IntVec3 cell => (IntVec3)job.GetTarget(iCell);
|
||||||
|
public Thing dildo => (Thing)job.GetTarget(TargetIndex.A);
|
||||||
public override bool TryMakePreToilReservations(bool errorOnFailed) {
|
public override bool TryMakePreToilReservations(bool errorOnFailed) {
|
||||||
return ReservationUtility.Reserve(pawn, job.targetA, job, stackCount: 1, errorOnFailed: false);
|
return ReservationUtility.Reserve(pawn, job.targetA, job, stackCount: 1, errorOnFailed: false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public new void setup_ticks() {
|
public new void setup_ticks() {
|
||||||
base.setup_ticks();
|
base.setup_ticks();
|
||||||
duration = (int)(xxx.is_frustrated(base.pawn) ? (2500f * Rand.Range(0.2f, 0.7f)) : (2500f * Rand.Range(0.2f, 0.4f)));
|
duration = ticks_left = (int)(xxx.is_frustrated(base.pawn) ? (2500f * Rand.Range(0.2f, 0.7f)) : (2500f * Rand.Range(0.2f, 0.4f)));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override IEnumerable<Toil> MakeNewToils() {
|
protected override IEnumerable<Toil> MakeNewToils() {
|
||||||
|
@ -31,12 +33,6 @@ namespace RJW_ToysAndMasturbation {
|
||||||
|
|
||||||
yield return Toils_Goto.GotoThing(TargetIndex.A, PathEndMode.ClosestTouch).FailOnDespawnedNullOrForbidden(TargetIndex.A);
|
yield return Toils_Goto.GotoThing(TargetIndex.A, PathEndMode.ClosestTouch).FailOnDespawnedNullOrForbidden(TargetIndex.A);
|
||||||
yield return Toils_Haul.StartCarryThing(TargetIndex.A);
|
yield return Toils_Haul.StartCarryThing(TargetIndex.A);
|
||||||
|
|
||||||
if (!SexToyUtility.isRJWAnimationsLoaded || true /*True for now*/) {
|
|
||||||
//place down if anims isn't loaded
|
|
||||||
yield return Toils_Haul.CarryHauledThingToCell(TargetIndex.C);
|
|
||||||
yield return Toils_Haul.PlaceHauledThingInCell(TargetIndex.C, Toils_Goto.GotoCell(TargetIndex.C, PathEndMode.OnCell), storageMode: false);
|
|
||||||
}
|
|
||||||
|
|
||||||
yield return Toils_Goto.GotoCell(TargetIndex.C, PathEndMode.OnCell);
|
yield return Toils_Goto.GotoCell(TargetIndex.C, PathEndMode.OnCell);
|
||||||
|
|
||||||
|
@ -46,20 +42,19 @@ namespace RJW_ToysAndMasturbation {
|
||||||
masturbationToil.defaultCompleteMode = ToilCompleteMode.Never;
|
masturbationToil.defaultCompleteMode = ToilCompleteMode.Never;
|
||||||
masturbationToil.initAction = delegate { Start(); };
|
masturbationToil.initAction = delegate { Start(); };
|
||||||
masturbationToil.tickAction = delegate {
|
masturbationToil.tickAction = delegate {
|
||||||
duration--;
|
|
||||||
if (Gen.IsHashIntervalTick(pawn, ticks_between_hearts)) {
|
if (Gen.IsHashIntervalTick(pawn, ticks_between_hearts)) {
|
||||||
ThrowMetaIcon(pawn.Position, pawn.Map, ThingDefOf.Mote_Heart);
|
ThrowMetaIconF(pawn.Position, this.pawn.Map, FleckDefOf.Heart);
|
||||||
}
|
}
|
||||||
SexTick(pawn, null);
|
SexTick(pawn, null);
|
||||||
SexUtility.reduce_rest(pawn);
|
SexUtility.reduce_rest(pawn);
|
||||||
if (duration <= 0) ReadyForNextToil();
|
if (ticks_left <= 0) ReadyForNextToil();
|
||||||
};
|
};
|
||||||
masturbationToil.AddFinishAction(delegate { End(); });
|
masturbationToil.AddFinishAction(delegate { End(); });
|
||||||
yield return masturbationToil;
|
yield return masturbationToil;
|
||||||
|
|
||||||
Toil AfterToil = new Toil();
|
Toil AfterToil = new Toil();
|
||||||
AfterToil.initAction = delegate {
|
AfterToil.initAction = delegate {
|
||||||
SexUtility.Aftersex(pawn);
|
SexUtility.Aftersex(Sexprops);
|
||||||
if(SexUtility.ConsiderCleaning(pawn)) {
|
if(SexUtility.ConsiderCleaning(pawn)) {
|
||||||
LocalTargetInfo filth = GridsUtility.GetFirstThing<Filth>(pawn.PositionHeld, pawn.Map);
|
LocalTargetInfo filth = GridsUtility.GetFirstThing<Filth>(pawn.PositionHeld, pawn.Map);
|
||||||
Job cleanup = JobMaker.MakeJob(JobDefOf.Clean);
|
Job cleanup = JobMaker.MakeJob(JobDefOf.Clean);
|
||||||
|
|
|
@ -11,7 +11,7 @@ using Verse.AI;
|
||||||
namespace RJW_ToysAndMasturbation {
|
namespace RJW_ToysAndMasturbation {
|
||||||
class JobGiver_MasturbateWithToy : ThinkNode_JobGiver {
|
class JobGiver_MasturbateWithToy : ThinkNode_JobGiver {
|
||||||
|
|
||||||
public static IntVec3 FapLocation(Pawn p) => (new JobGiver_Masturbate()).FindFapLocation(p);
|
public static IntVec3 FapLocation(Pawn p) => CasualSex_Helper.FindSexLocation(p);
|
||||||
|
|
||||||
protected override Job TryGiveJob(Pawn pawn) {
|
protected override Job TryGiveJob(Pawn pawn) {
|
||||||
|
|
||||||
|
|
43
Source/Patches/HarmonyPatch_JobDriver_Masturbate.cs
Normal file
43
Source/Patches/HarmonyPatch_JobDriver_Masturbate.cs
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using RimWorld;
|
||||||
|
using rjw;
|
||||||
|
using Verse;
|
||||||
|
using HarmonyLib;
|
||||||
|
|
||||||
|
namespace RJW_ToysAndMasturbation
|
||||||
|
{
|
||||||
|
//Nerfs masturbate satisfaction
|
||||||
|
[HarmonyPatch(typeof(JobDriver_Masturbate), "CalculateSatisfactionPerTick")]
|
||||||
|
public class HarmonyPatch_JobDriver_Masturbate
|
||||||
|
{
|
||||||
|
|
||||||
|
public static void Postfix(ref JobDriver_Masturbate __instance)
|
||||||
|
{
|
||||||
|
Log.Message("regular masturbation");
|
||||||
|
__instance.satisfaction *= 0.6f;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
[HarmonyPatch(typeof(JobDriver_MasturbateWithToy), "CalculateSatisfactionPerTick")]
|
||||||
|
public class HarmonyPatch_JobDriver_MasturbateWithToy
|
||||||
|
{
|
||||||
|
|
||||||
|
public static void Postfix(ref JobDriver_MasturbateWithToy __instance)
|
||||||
|
{
|
||||||
|
Log.Message("Sextoy satisfaction modifier: " + __instance.dildo.TryGetComp<CompSexToy>().Props.satisfactionModifier);
|
||||||
|
__instance.satisfaction *= 0.6f * __instance.dildo.TryGetComp<CompSexToy>().Props.satisfactionModifier;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -10,6 +10,7 @@ namespace RJW_ToysAndMasturbation {
|
||||||
public class CompProperties_SexToy : CompProperties {
|
public class CompProperties_SexToy : CompProperties {
|
||||||
|
|
||||||
public Gender primaryGender = Gender.Female;
|
public Gender primaryGender = Gender.Female;
|
||||||
|
public float satisfactionModifier = 1.5f;
|
||||||
public CompProperties_SexToy() {
|
public CompProperties_SexToy() {
|
||||||
compClass = typeof(CompSexToy);
|
compClass = typeof(CompSexToy);
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,7 +11,7 @@ using rjw;
|
||||||
namespace RJW_ToysAndMasturbation {
|
namespace RJW_ToysAndMasturbation {
|
||||||
public class CompSexToy : ThingComp {
|
public class CompSexToy : ThingComp {
|
||||||
|
|
||||||
public static IntVec3 FapLocation(Pawn p) => (new JobGiver_Masturbate()).FindFapLocation(p);
|
public static IntVec3 FapLocation(Pawn p) => CasualSex_Helper.FindSexLocation(p);
|
||||||
|
|
||||||
public CompProperties_SexToy Props => (CompProperties_SexToy)props;
|
public CompProperties_SexToy Props => (CompProperties_SexToy)props;
|
||||||
|
|
||||||
|
@ -34,8 +34,8 @@ namespace RJW_ToysAndMasturbation {
|
||||||
|
|
||||||
yield return new FloatMenuOption(FloatMenuOptionLabel(pawn), delegate {
|
yield return new FloatMenuOption(FloatMenuOptionLabel(pawn), delegate {
|
||||||
|
|
||||||
if (RJWPreferenceSettings.FapInBed && pawn.jobs.curDriver is JobDriver_LayDown) {
|
if (RJWPreferenceSettings.FapInBed && pawn.jobs.curDriver is JobDriver_LayDown down) {
|
||||||
Building_Bed bed = ((JobDriver_LayDown)pawn.jobs.curDriver).Bed;
|
Building_Bed bed = down.Bed;
|
||||||
if (bed != null) {
|
if (bed != null) {
|
||||||
Job j = JobMaker.MakeJob(MasturbateToyDefOf.MasturbateWithToy, parent, bed, bed.Position);
|
Job j = JobMaker.MakeJob(MasturbateToyDefOf.MasturbateWithToy, parent, bed, bed.Position);
|
||||||
j.count = 1;
|
j.count = 1;
|
||||||
|
|
Loading…
Reference in a new issue