mirror of
https://gitgud.io/c0ffeeeeeeee/rimworld-animations.git
synced 2024-08-15 00:43:45 +00:00
vanilla lovin does animation
This commit is contained in:
parent
b04afef7b1
commit
1e05e7a3dc
7 changed files with 77 additions and 6 deletions
Binary file not shown.
|
@ -2,7 +2,8 @@
|
||||||
|
|
||||||
<ModMetaData>
|
<ModMetaData>
|
||||||
<name>Rimworld-Animations</name>
|
<name>Rimworld-Animations</name>
|
||||||
<author>Platinumspoons</author>
|
<author>C0ffee</author>
|
||||||
|
<url>https://gitgud.io/Platinumspoons/rimworld-animations/</url>
|
||||||
<supportedVersions>
|
<supportedVersions>
|
||||||
<li>1.1</li>
|
<li>1.1</li>
|
||||||
</supportedVersions>
|
</supportedVersions>
|
||||||
|
@ -20,12 +21,23 @@
|
||||||
<downloadUrl>https://github.com/UnlimitedHugs/RimworldHugsLib/releases/latest</downloadUrl>
|
<downloadUrl>https://github.com/UnlimitedHugs/RimworldHugsLib/releases/latest</downloadUrl>
|
||||||
<steamWorkshopUrl>steam://url/CommunityFilePage/818773962</steamWorkshopUrl>
|
<steamWorkshopUrl>steam://url/CommunityFilePage/818773962</steamWorkshopUrl>
|
||||||
</li>
|
</li>
|
||||||
|
<li>
|
||||||
|
<packageId>rim.job.world</packageId>
|
||||||
|
<displayName>RimJobWorld</displayName>
|
||||||
|
<downloadUrl>https://www.loverslab.com/topic/110270-mod-rimjobworld/</downloadUrl>
|
||||||
|
</li>
|
||||||
</modDependencies>
|
</modDependencies>
|
||||||
<loadAfter>
|
<loadAfter>
|
||||||
<li>UnlimitedHugs.HugsLib</li>
|
<li>UnlimitedHugs.HugsLib</li>
|
||||||
<li>brrainz.harmony</li>
|
<li>brrainz.harmony</li>
|
||||||
|
<li>rim.job.world</li>
|
||||||
</loadAfter>
|
</loadAfter>
|
||||||
<description>
|
<description>
|
||||||
Rimworld Animations! Hurray!
|
Rimworld Animations! Hurray!
|
||||||
|
|
||||||
|
Questions or bugs?
|
||||||
|
Chat with me on the forums: https://www.loverslab.com/topic/140386-rjw-animations/
|
||||||
|
Or on the rjw discord: https://discord.gg/CXwHhv8
|
||||||
|
|
||||||
</description>
|
</description>
|
||||||
</ModMetaData>
|
</ModMetaData>
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
<Defs>
|
<Defs>
|
||||||
<!--
|
<!--
|
||||||
<rjw.AnimationDef>
|
<rjw.AnimationDef>
|
||||||
Todo, finalize vanilla template first
|
Todo: tell Ed to uncomment start() and end() in jobdrivers
|
||||||
|
|
||||||
</rjw.AnimationDef>
|
</rjw.AnimationDef>
|
||||||
-->
|
-->
|
||||||
|
|
|
@ -90,6 +90,7 @@
|
||||||
<Compile Include="Source\Patches\HarmonyPatch_Pawn_DrawTracker.cs" />
|
<Compile Include="Source\Patches\HarmonyPatch_Pawn_DrawTracker.cs" />
|
||||||
<Compile Include="Source\Patches\HarmonyPatch_ShowHairWithHats.cs" />
|
<Compile Include="Source\Patches\HarmonyPatch_ShowHairWithHats.cs" />
|
||||||
<Compile Include="Source\Patches\Harmony_PatchAll.cs" />
|
<Compile Include="Source\Patches\Harmony_PatchAll.cs" />
|
||||||
|
<Compile Include="Source\Patches\rjwPatches\HarmonyPatch_DoLovinAnimationPatch.cs" />
|
||||||
<Compile Include="Source\Patches\rjwPatches\HarmonyPatch_JobDriver_SexBaseInitiator.cs" />
|
<Compile Include="Source\Patches\rjwPatches\HarmonyPatch_JobDriver_SexBaseInitiator.cs" />
|
||||||
<Compile Include="Source\Patches\rjwPatches\HarmonyPatch_JoinInBedGiveJob.cs" />
|
<Compile Include="Source\Patches\rjwPatches\HarmonyPatch_JoinInBedGiveJob.cs" />
|
||||||
<Compile Include="Source\Patches\rjwPatches\HarmonyPatch_SexTick.cs" />
|
<Compile Include="Source\Patches\rjwPatches\HarmonyPatch_SexTick.cs" />
|
||||||
|
|
|
@ -38,7 +38,6 @@ namespace Rimworld_Animations {
|
||||||
Toil startPartnerSex = new Toil();
|
Toil startPartnerSex = new Toil();
|
||||||
startPartnerSex.initAction = delegate {
|
startPartnerSex.initAction = delegate {
|
||||||
|
|
||||||
Log.Message("Attempting to start job...");
|
|
||||||
Job gettinLovedJob = JobMaker.MakeJob(DefDatabase<JobDef>.GetNamed("GettinLovedAnimation"), pawn, Bed); // new gettin loved toil that wakes up the pawn goes here
|
Job gettinLovedJob = JobMaker.MakeJob(DefDatabase<JobDef>.GetNamed("GettinLovedAnimation"), pawn, Bed); // new gettin loved toil that wakes up the pawn goes here
|
||||||
|
|
||||||
Partner.jobs.jobQueue.EnqueueFirst(gettinLovedJob);
|
Partner.jobs.jobQueue.EnqueueFirst(gettinLovedJob);
|
||||||
|
|
|
@ -0,0 +1,28 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using HarmonyLib;
|
||||||
|
using RimWorld;
|
||||||
|
using Verse;
|
||||||
|
using rjw;
|
||||||
|
using Verse.AI;
|
||||||
|
|
||||||
|
namespace Rimworld_Animations {
|
||||||
|
|
||||||
|
[HarmonyPatch(typeof(JobGiver_DoLovin), "TryGiveJob")]
|
||||||
|
public static class HarmonyPatch_DoLovinAnimationPatch {
|
||||||
|
|
||||||
|
public static void Postfix(ref Pawn pawn, ref Job __result) {
|
||||||
|
|
||||||
|
if(__result != null) {
|
||||||
|
|
||||||
|
RestUtility.WakeUp(pawn);
|
||||||
|
Pawn partnerInMyBed = LovePartnerRelationUtility.GetPartnerInMyBed(pawn);
|
||||||
|
__result = JobMaker.MakeJob(DefDatabase<JobDef>.GetNamed("JoinInBedAnimation", true), partnerInMyBed, partnerInMyBed.CurrentBed());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -107,6 +107,37 @@ namespace Rimworld_Animations {
|
||||||
|
|
||||||
public static void Postfix(ref JobDriver_SexBaseInitiator __instance) {
|
public static void Postfix(ref JobDriver_SexBaseInitiator __instance) {
|
||||||
|
|
||||||
|
//Stolen from vanilla lovin
|
||||||
|
//to make sure vanilla lovin variables are set
|
||||||
|
if(__instance.pawn?.mindState?.canLovinTick != null) {
|
||||||
|
|
||||||
|
SimpleCurve LovinIntervalHoursFromAgeCurve = new SimpleCurve
|
||||||
|
{
|
||||||
|
new CurvePoint(16f, 1.5f),
|
||||||
|
new CurvePoint(22f, 1.5f),
|
||||||
|
new CurvePoint(30f, 4f),
|
||||||
|
new CurvePoint(50f, 12f),
|
||||||
|
new CurvePoint(75f, 36f)
|
||||||
|
};
|
||||||
|
|
||||||
|
int ticksToNextLovin;
|
||||||
|
if (DebugSettings.alwaysDoLovin) {
|
||||||
|
|
||||||
|
ticksToNextLovin = 100;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
float centerX = LovinIntervalHoursFromAgeCurve.Evaluate(__instance.pawn.ageTracker.AgeBiologicalYearsFloat);
|
||||||
|
|
||||||
|
centerX = Rand.Gaussian(centerX, 0.3f);
|
||||||
|
if (centerX < 0.5f) {
|
||||||
|
centerX = 0.5f;
|
||||||
|
}
|
||||||
|
ticksToNextLovin = (int)(centerX * 2500f);
|
||||||
|
}
|
||||||
|
__instance.pawn.mindState.canLovinTick = Find.TickManager.TicksGame + ticksToNextLovin;
|
||||||
|
}
|
||||||
|
|
||||||
if (__instance.Target.jobs?.curDriver is JobDriver_SexBaseReciever) {
|
if (__instance.Target.jobs?.curDriver is JobDriver_SexBaseReciever) {
|
||||||
if (__instance.pawn.TryGetComp<CompBodyAnimator>().isAnimating) {
|
if (__instance.pawn.TryGetComp<CompBodyAnimator>().isAnimating) {
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue