rjw-sexperience-ideology/Source/IdeologyAddon/Patches/RJW_Patch_ChancePerHour.cs
2025-02-21 20:05:03 +05:00

75 lines
2.1 KiB
C#

using HarmonyLib;
using RimWorld;
using rjw;
using RJWSexperience.Ideology.HistoryEvents;
using Verse;
namespace RJWSexperience.Ideology.Patches
{
[HarmonyPatch(typeof(ThinkNode_ChancePerHour_Bestiality), "MtbHours")]
public static class RJW_Patch_ThinkNode_ChancePerHour_Bestiality
{
public static void Postfix(Pawn pawn, ref float __result)
{
if (__result < 0f || pawn.Ideo == null) // ideo is null if don't have dlc
return;
if (!RsiDefOf.HistoryEvent.RSI_SexWithAnimal.CreateEvent(pawn).DoerWillingToDo())
{
__result = -2f;
return;
}
__result *= IdeoUtility.GetPreceptsMtbMultiplier(pawn.Ideo, x => x.bestialityMtbMult);
}
}
[HarmonyPatch(typeof(ThinkNode_ChancePerHour_RapeCP), "MtbHours")]
public static class RJW_Patch_ThinkNode_ChancePerHour_RapeCP
{
public static void Postfix(Pawn pawn, ref float __result)
{
if (__result < 0f || pawn.Ideo == null) // ideo is null if don't have dlc
return;
if (!RsiDefOf.HistoryEvent.RSI_Raped.CreateEvent(pawn).DoerWillingToDo())
{
__result = -2f;
return;
}
__result *= IdeoUtility.GetPreceptsMtbMultiplier(pawn.Ideo, x => x.rapeCpMtbMult);
}
}
[HarmonyPatch(typeof(ThinkNode_ChancePerHour_Necro), "MtbHours")]
public static class RJW_Patch_ThinkNode_ChancePerHour_Necro
{
public static void Postfix(Pawn pawn, ref float __result)
{
if (__result < 0f || pawn.Ideo == null) // ideo is null if don't have dlc
return;
if (!RsiDefOf.HistoryEvent.RSI_SexWithCorpse.CreateEvent(pawn).DoerWillingToDo())
{
__result = -2f;
return;
}
__result *= IdeoUtility.GetPreceptsMtbMultiplier(pawn.Ideo, x => x.necroMtbMult);
}
}
[HarmonyPatch(typeof(ThinkNode_ChancePerHour_Fappin), "MtbHours")]
public static class RJW_Patch_ThinkNode_ChancePerHour_Fappin
{
public static void Postfix(Pawn p, ref float __result)
{
if (__result < 0f || p.Ideo == null) // ideo is null if don't have dlc
return;
if (!RsiDefOf.HistoryEvent.RSI_Masturbated.CreateEvent(p).DoerWillingToDo())
{
__result = -2f;
return;
}
__result *= IdeoUtility.GetPreceptsMtbMultiplier(p.Ideo, x => x.fapMtbMult);
}
}
}