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

Binary file not shown.

View file

@ -40,4 +40,43 @@
</li> </li>
</comps> </comps>
</AbilityDef> </AbilityDef>
<AbilityDef>
<defName>rjw_genes_ability_InitiateLovin</defName>
<label>initiate lovin</label>
<description>Seduce the target to approach the caster.</description>
<iconPath>Genes/Icons/seduce</iconPath>
<writeCombatLog>True</writeCombatLog>
<stunTargetWhileCasting>true</stunTargetWhileCasting>
<displayGizmoWhileUndrafted>true</displayGizmoWhileUndrafted>
<cooldownTicksRange>30000</cooldownTicksRange>
<disableGizmoWhileUndrafted>false</disableGizmoWhileUndrafted>
<statBases>
<Ability_Duration>10</Ability_Duration>
</statBases>
<warmupMote>Mote_CoagulateStencil</warmupMote>
<warmupEffecter>Coagulate</warmupEffecter>
<warmupStartSound>Coagulate_Cast</warmupStartSound>
<verbProperties>
<verbClass>Verb_CastAbility</verbClass>
<range>10</range>
<warmupTime>1</warmupTime>
<targetParams>
<canTargetAnimals>false</canTargetAnimals>
<canTargetSelf>false</canTargetSelf>
<canTargetBuildings>false</canTargetBuildings>
<canTargetMechs>false</canTargetMechs>
<canTargetBloodfeeders>true</canTargetBloodfeeders>
</targetParams>
</verbProperties>
<comps>
<li Class = "RJW_Genes.CompProperties_Seduce">
<compClass>RJW_Genes.CompAbilityEffect_Seduce</compClass>
<destination>Caster</destination>
</li>
<li Class="CompProperties_AbilityFleckOnTarget">
<fleckDef>Heart</fleckDef>
</li>
</comps>
</AbilityDef>
</Defs> </Defs>

View file

@ -0,0 +1,29 @@
<?xml version="1.0" encoding="utf-8" ?>
<Patch>
<Operation Class="PatchOperationFindMod">
<mods>
<li>Vanilla Races Expanded - Highmate</li>
</mods>
<match Class="PatchOperationSequence">
<operations>
<li Class="PatchOperationReplace">
<xpath>/Defs/GeneDef[defName="VRE_Libido_VeryHigh"]/abilities</xpath>
<value>
<abilities>
<li>rjw_genes_ability_InitiateLovin</li>
</abilities>
</value>
</li>
<li Class="PatchOperationReplace">
<xpath>/Defs/GeneDef[defName="VRE_Libido_VeryHigh"]/descriptionHyperlinks</xpath>
<value>
<descriptionHyperlinks>
<AbilityDef>rjw_genes_ability_InitiateLovin</AbilityDef>
</descriptionHyperlinks>
</value>
</li>
</operations>
</match>
</Operation>
</Patch>

View file

@ -20,6 +20,7 @@ namespace RJW_BGS
[HarmonyPatch("impregnate")] [HarmonyPatch("impregnate")]
private static void ImpregnatePostfix(ref SexProps props) 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) + ":"); if (RJWSettings.DevMode) rjw.ModLog.Message("Rimjobworld::impregnate(" + props.sexType + "):: " + xxx.get_pawnname(props.pawn) + " + " + xxx.get_pawnname(props.partner) + ":");
//"mech" pregnancy //"mech" pregnancy
@ -33,7 +34,10 @@ namespace RJW_BGS
List<Hediff> pawnparts = giver.GetGenitalsList(); List<Hediff> pawnparts = giver.GetGenitalsList();
List<Hediff> partnerparts = receiver.GetGenitalsList(); List<Hediff> partnerparts = receiver.GetGenitalsList();
var interaction = rjw.Modules.Interactions.Helpers.InteractionHelper.GetWithExtension(props.dictionaryKey); 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))) if (!(props.sexType == xxx.rjwSextype.Anal && receiver.genes.HasActiveGene(RJW_Genes.GeneDefOf.rjw_genes_fertile_anus)))
return; 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_LoveFeed = DefDatabase<GeneDef>.GetNamed("RS_LoveFeed", false);
[MayRequire("resplice.xotr.charmweavers")] public static GeneDef RS_MultiPregnancy = DefDatabase<GeneDef>.GetNamed("RS_MultiPregnancy", 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("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] //[HarmonyPostfix]
static Def LoveFeed = DefDatabase<GeneDef>.GetNamed("RS_LoveFeed", false); static Def LoveFeed = DefDatabase<GeneDef>.GetNamed("RS_LoveFeed", false);
static Def VampireLover = DefDatabase<GeneDef>.GetNamed("VU_VampireLover", 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) public static void Postfix(SexProps props)
{ {
try try
@ -32,6 +34,9 @@ namespace RJWLoveFeeding
//ModLog.Message($" Patch Worked"); //ModLog.Message($" Patch Worked");
if(!props.pawn.IsCaravanMember() && !props.partner.IsCaravanMember()) if(!props.pawn.IsCaravanMember() && !props.partner.IsCaravanMember())
{ {
FillNeed(props.pawn);
FillNeed(props.partner);
RJWTryTakeBlood(props.pawn, props.partner); RJWTryTakeBlood(props.pawn, props.partner);
RJWTryTakeBlood(props.partner, props.pawn); RJWTryTakeBlood(props.partner, props.pawn);
} }
@ -40,6 +45,28 @@ namespace RJWLoveFeeding
} }
public static void FillNeed(Pawn pawn)
{
Pawn_GeneTracker genes;
if (LovinDependency != null)
{
genes = pawn.genes;
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) public static bool RJWTryTakeBlood(Pawn pawn, Pawn bloodBag)
{ {