highmates patch

This commit is contained in:
Jaaldabaoth 2024-05-27 21:19:08 +02:00
parent 72b3c10c56
commit 9ae622bb7f
6 changed files with 103 additions and 3 deletions

View file

@ -20,6 +20,7 @@ namespace RJW_BGS
[HarmonyPatch("impregnate")]
private static void ImpregnatePostfix(ref SexProps props)
{
if (RJWSettings.DevMode) rjw.ModLog.Message("Rimjobworld::impregnate(" + props.sexType + "):: " + xxx.get_pawnname(props.pawn) + " + " + xxx.get_pawnname(props.partner) + ":");
//"mech" pregnancy
@ -33,7 +34,10 @@ namespace RJW_BGS
List<Hediff> pawnparts = giver.GetGenitalsList();
List<Hediff> partnerparts = receiver.GetGenitalsList();
var interaction = rjw.Modules.Interactions.Helpers.InteractionHelper.GetWithExtension(props.dictionaryKey);
if (receiver.genes == null)
{
return;
}
if (!(props.sexType == xxx.rjwSextype.Anal && receiver.genes.HasActiveGene(RJW_Genes.GeneDefOf.rjw_genes_fertile_anus)))
return;

View file

@ -119,6 +119,7 @@ namespace RJW_Genes
[MayRequire("resplice.xotr.charmweavers")] public static GeneDef RS_LoveFeed = DefDatabase<GeneDef>.GetNamed("RS_LoveFeed", false);
[MayRequire("resplice.xotr.charmweavers")] public static GeneDef RS_MultiPregnancy = DefDatabase<GeneDef>.GetNamed("RS_MultiPregnancy", false);
[MayRequire("redmattis.bigsmall.core")] public static GeneDef VU_VampireLover = DefDatabase<GeneDef>.GetNamed("VU_VampireLover", false);
[MayRequire("vanillaracesexpanded.highmate")] public static GeneDef VRE_LovinDependency = DefDatabase<GeneDef>.GetNamed("VRE_LovinDependency", false);

View file

@ -13,6 +13,8 @@ namespace RJWLoveFeeding
//[HarmonyPostfix]
static Def LoveFeed = DefDatabase<GeneDef>.GetNamed("RS_LoveFeed", false);
static Def VampireLover = DefDatabase<GeneDef>.GetNamed("VU_VampireLover", false);
static Def LovinDependency = DefDatabase<GeneDef>.GetNamed("VRE_LovinDependency", false);
static NeedDef VRE_Lovin = DefDatabase<NeedDef>.GetNamed("VRE_Lovin", false);
public static void Postfix(SexProps props)
{
try
@ -32,7 +34,10 @@ namespace RJWLoveFeeding
//ModLog.Message($" Patch Worked");
if(!props.pawn.IsCaravanMember() && !props.partner.IsCaravanMember())
{
RJWTryTakeBlood(props.pawn, props.partner);
FillNeed(props.pawn);
FillNeed(props.partner);
RJWTryTakeBlood(props.pawn, props.partner);
RJWTryTakeBlood(props.partner, props.pawn);
}
@ -40,8 +45,30 @@ namespace RJWLoveFeeding
}
public static void FillNeed(Pawn pawn)
{
Pawn_GeneTracker genes;
if (LovinDependency != null)
{
genes = pawn.genes;
public static bool RJWTryTakeBlood(Pawn pawn, Pawn bloodBag)
if (genes == null)
{
return;
}
if (pawn.genes.HasActiveGene(RJW_Genes.GeneDefOf.VRE_LovinDependency))
{
if (VRE_Lovin != null)
{
Pawn_NeedsTracker needs = pawn.needs;
((needs != null) ? needs.TryGetNeed(VRE_Lovin) : null).CurLevel = 1f;
}
}
}
}
public static bool RJWTryTakeBlood(Pawn pawn, Pawn bloodBag)
{