rjw_menstruation/source/RJW_Menstruation/RJW_Menstruation/Patch/Pawn_Patch.cs

82 lines
2.2 KiB
C#
Raw Normal View History

2021-02-03 05:20:03 +00:00
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
2021-02-13 09:45:22 +00:00
using UnityEngine;
2021-02-03 05:20:03 +00:00
using RimWorld;
using Verse;
using HarmonyLib;
using HugsLib;
2021-02-13 09:45:22 +00:00
using rjw;
2021-02-03 05:20:03 +00:00
namespace RJW_Menstruation
{
[HarmonyPatch(typeof(Pawn), "SpawnSetup")]
public class Pawn_Patch
{
public static void Postfix(Map map, bool respawningAfterLoad, Pawn __instance)
{
2021-02-03 05:54:25 +00:00
//Log.Message("Initialize on spawnsetup");
2021-02-03 05:20:03 +00:00
HediffComp_Menstruation comp = Utility.GetMenstruationComp(__instance);
if (comp != null)
{
HugsLibController.Instance.TickDelayScheduler.TryUnscheduleCallback(comp.actionref);
comp.Initialize();
}
}
2021-02-13 09:45:22 +00:00
}
[HarmonyPatch(typeof(FloatMenuMakerMap), "AddHumanlikeOrders")]
public class HumanlikeOrder_Patch
{
public static void Postfix(Vector3 clickPos, Pawn pawn, List<FloatMenuOption> opts)
{
var selftargets = GenUI.TargetsAt_NewTemp(clickPos, TargetingParameters.ForSelf(pawn));
foreach (LocalTargetInfo t in selftargets)
{
2021-02-22 10:51:41 +00:00
if (Utility.HasMenstruationComp(pawn)) opts.AddDistinct(MakeSelfMenu(pawn, t));
2021-02-19 06:42:08 +00:00
break;
2021-02-13 09:45:22 +00:00
}
2021-02-19 06:42:08 +00:00
2021-02-13 09:45:22 +00:00
}
public static FloatMenuOption MakeSelfMenu(Pawn pawn, LocalTargetInfo target)
{
2021-02-22 10:51:41 +00:00
FloatMenuOption option = FloatMenuUtility.DecoratePrioritizedTask(new FloatMenuOption(Translations.FloatMenu_CleanSelf, delegate ()
2021-02-13 09:45:22 +00:00
{
pawn.jobs.TryTakeOrderedJob_NewTemp(new Verse.AI.Job(VariousDefOf.VaginaWashing, null, null, target.Cell));
}, MenuOptionPriority.Low), pawn, target);
return option;
}
2021-02-03 05:20:03 +00:00
}
2021-02-13 09:45:22 +00:00
2021-02-22 10:51:41 +00:00
//[HarmonyPatch(typeof(JobGiver_OptimizeApparel), "ApparelScoreGain_NewTmp")]
//public class OptimizeApparel_Patch
//{
// public static bool Prefix(ref float __result, Pawn pawn, Apparel ap, List<float> wornScoresCache)
// {
// if (ap is Absorber)
// {
// __result = -1000f;
// return false;
// }
// return true;
// }
//
//}
2021-02-13 09:45:22 +00:00
2021-02-03 05:20:03 +00:00
}