rjw-sexperience-ideology/Source/IdeologyAddon/Patches/RJW_Patch_ChancePerHour.cs

76 lines
2.2 KiB
C#

using HarmonyLib;
using RimWorld;
using rjw;
using RJWSexperience.Ideology.HistoryEvents;
using RJWSexperience.Ideology.Precepts;
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 (!RsiHistoryEventDefOf.RSI_SexWithAnimal.CreateEvent(pawn).DoerWillingToDo())
{
__result = -2f;
return;
}
__result *= IdeoUtility.GetPreceptsMtbMultiplier<DefExtension_ModifyBestialityMtb>(pawn.Ideo);
}
}
[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 (!RsiHistoryEventDefOf.RSI_Raped.CreateEvent(pawn).DoerWillingToDo())
{
__result = -2f;
return;
}
__result *= IdeoUtility.GetPreceptsMtbMultiplier<DefExtension_ModifyRapeCPMtb>(pawn.Ideo);
}
}
[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 (!RsiHistoryEventDefOf.RSI_SexWithCorpse.CreateEvent(pawn).DoerWillingToDo())
{
__result = -2f;
return;
}
__result *= IdeoUtility.GetPreceptsMtbMultiplier<DefExtension_ModifyNecroMtb>(pawn.Ideo);
}
}
[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 (!RsiHistoryEventDefOf.RSI_Masturbated.CreateEvent(p).DoerWillingToDo())
{
__result = -2f;
return;
}
__result *= IdeoUtility.GetPreceptsMtbMultiplier<DefExtension_ModifyFappinMtb>(p.Ideo);
}
}
}