Move rape events to the new system, add sextype events for doer

This commit is contained in:
amevarashi 2022-07-15 21:54:02 +05:00
parent 111b5b2450
commit a6098bed72
5 changed files with 170 additions and 12 deletions

View file

@ -59,9 +59,9 @@ namespace RJWSexperience.Ideology.Patches
if (props.hasPartner()) if (props.hasPartner())
{ {
if (xxx.is_human(props.pawn)) if (xxx.is_human(props.pawn))
AfterSexHuman(props.pawn, props.partner, props.isRape); AfterSexHuman(props.pawn, props.partner);
else if (xxx.is_human(props.partner)) else if (xxx.is_human(props.partner))
AfterSexHuman(props.partner, props.pawn, false); AfterSexHuman(props.partner, props.pawn);
if (xxx.is_human(props.partner) && props.isRape) if (xxx.is_human(props.partner) && props.isRape)
{ {
@ -90,7 +90,7 @@ namespace RJWSexperience.Ideology.Patches
} }
} }
public static void AfterSexHuman(Pawn human, Pawn partner, bool rape) public static void AfterSexHuman(Pawn human, Pawn partner)
{ {
RsiHistoryEventDefOf.RSI_NonIncestuosSex.RecordEventWithPartner(human, partner); RsiHistoryEventDefOf.RSI_NonIncestuosSex.RecordEventWithPartner(human, partner);
RsiHistoryEventDefOf.RSI_NonIncestuosSex.RecordEventWithPartner(partner, human); RsiHistoryEventDefOf.RSI_NonIncestuosSex.RecordEventWithPartner(partner, human);
@ -99,11 +99,6 @@ namespace RJWSexperience.Ideology.Patches
{ {
RsiHistoryEventDefOf.RSI_SexWithAnimal.RecordEventWithPartner(human, partner); RsiHistoryEventDefOf.RSI_SexWithAnimal.RecordEventWithPartner(human, partner);
} }
else if (xxx.is_human(partner) && rape)
{
RsiHistoryEventDefOf.RSI_Raped.RecordEventWithPartner(human, partner);
RsiHistoryEventDefOf.RSI_WasRaped.RecordEventWithPartner(partner, human);
}
} }
public static void RapeEffectSlave(Pawn victim) public static void RapeEffectSlave(Pawn victim)

View file

@ -1,15 +1,12 @@
using RimWorld; using RimWorld;
using Verse;
namespace RJWSexperience.Ideology namespace RJWSexperience.Ideology
{ {
[DefOf] [DefOf]
public static class RsiHistoryEventDefOf public static class RsiHistoryEventDefOf
{ {
[MayRequireIdeology] public static readonly HistoryEventDef RSI_SexWithAnimal; [MayRequireIdeology] public static readonly HistoryEventDef RSI_SexWithAnimal;
[MayRequireIdeology] public static readonly HistoryEventDef RSI_Raped; [MayRequireIdeology] public static readonly HistoryEventDef RSI_Raped;
[MayRequireIdeology] public static readonly HistoryEventDef RSI_WasRaped;
[MayRequireIdeology] public static readonly HistoryEventDef RSI_NonIncestuosMarriage; [MayRequireIdeology] public static readonly HistoryEventDef RSI_NonIncestuosMarriage;
[MayRequireIdeology] public static readonly HistoryEventDef RSI_NonIncestuosSex; [MayRequireIdeology] public static readonly HistoryEventDef RSI_NonIncestuosSex;
[MayRequireIdeology] public static readonly HistoryEventDef RSI_SexWithCorpse; [MayRequireIdeology] public static readonly HistoryEventDef RSI_SexWithCorpse;

View file

@ -18,7 +18,7 @@ namespace RJWSexperience.Ideology
if (doer?.Applies(pawn) == false) if (doer?.Applies(pawn) == false)
return false; return false;
if (this.partner?.Applies(pawn) == false) if (this.partner?.Applies(partner) == false)
return false; return false;
if (relations?.Applies(pawn, partner) == false) if (relations?.Applies(pawn, partner) == false)

View file

@ -0,0 +1,83 @@
<?xml version="1.0" encoding="UTF-8"?>
<Patch>
<Operation Class="PatchOperationAddModExtension">
<xpath>/Defs/InteractionDef[defName="Rape_Vaginal"]</xpath>
<value>
<li Class="RJWSexperience.Ideology.InteractionDefExtension_HistoryEvents">
<pawnEvents>
<li>RSI_VaginalSex</li>
<li>RSI_Raped</li>
</pawnEvents>
<partnerEvents>
<!--<li>RSI_VaginalSex</li>-->
<li>RSI_WasRaped</li>
</partnerEvents>
</li>
</value>
</Operation>
<Operation Class="PatchOperationAddModExtension">
<xpath>/Defs/InteractionDef[defName="Rape_Anal" or defName="Rape_Rimming"]</xpath>
<value>
<li Class="RJWSexperience.Ideology.InteractionDefExtension_HistoryEvents">
<pawnEvents>
<li>RSI_AnalSex</li>
<li>RSI_Raped</li>
</pawnEvents>
<partnerEvents>
<!--<li>RSI_AnalSex</li>-->
<li>RSI_WasRaped</li>
</partnerEvents>
</li>
</value>
</Operation>
<Operation Class="PatchOperationAddModExtension">
<xpath>/Defs/InteractionDef[defName="Rape_Beakjob" or defName="Rape_Cunnilingus" or defName="Rape_Fellatio" or defName="Rape_Oral"]</xpath>
<value>
<li Class="RJWSexperience.Ideology.InteractionDefExtension_HistoryEvents">
<pawnEvents>
<li>RSI_OralSex</li>
<li>RSI_Raped</li>
</pawnEvents>
<partnerEvents>
<!--<li>RSI_OralSex</li>-->
<li>RSI_WasRaped</li>
</partnerEvents>
</li>
</value>
</Operation>
<Operation Class="PatchOperationAddModExtension">
<xpath>/Defs/InteractionDef[defName="Rape_Breastjob" or defName="Rape_Fingering" or defName="Rape_Footjob" or defName="Rape_Handjob"]</xpath>
<value>
<li Class="RJWSexperience.Ideology.InteractionDefExtension_HistoryEvents">
<pawnEvents>
<li>RSI_MiscSex</li>
<li>RSI_Raped</li>
</pawnEvents>
<partnerEvents>
<!--<li>RSI_MiscSex</li>-->
<li>RSI_WasRaped</li>
</partnerEvents>
</li>
</value>
</Operation>
<Operation Class="PatchOperationAddModExtension">
<xpath>/Defs/InteractionDef[defName="Rape_DoublePenetration" or defName="Rape_DoublePenetrationM" or defName="Rape_Fisting" or defName="Rape_Scissoring"]</xpath>
<value>
<li Class="RJWSexperience.Ideology.InteractionDefExtension_HistoryEvents">
<pawnEvents>
<li>RSI_PromiscuousSex</li>
<li>RSI_Raped</li>
</pawnEvents>
<partnerEvents>
<!--<li>RSI_PromiscuousSex</li>-->
<li>RSI_WasRaped</li>
</partnerEvents>
</li>
</value>
</Operation>
</Patch>

View file

@ -0,0 +1,83 @@
<?xml version="1.0" encoding="UTF-8"?>
<Patch>
<Operation Class="PatchOperationAddModExtension">
<xpath>/Defs/InteractionDef[defName="Rape_Reverse_Vaginal"]</xpath>
<value>
<li Class="RJWSexperience.Ideology.InteractionDefExtension_HistoryEvents">
<pawnEvents>
<li>RSI_VaginalSex</li>
<li>RSI_Raped</li>
</pawnEvents>
<partnerEvents>
<!--<li>RSI_VaginalSex</li>-->
<li>RSI_WasRaped</li>
</partnerEvents>
</li>
</value>
</Operation>
<Operation Class="PatchOperationAddModExtension">
<xpath>/Defs/InteractionDef[defName="Rape_Reverse_Anal" or defName="Rape_Reverse_Rimming"]</xpath>
<value>
<li Class="RJWSexperience.Ideology.InteractionDefExtension_HistoryEvents">
<pawnEvents>
<li>RSI_AnalSex</li>
<li>RSI_Raped</li>
</pawnEvents>
<partnerEvents>
<!--<li>RSI_AnalSex</li>-->
<li>RSI_WasRaped</li>
</partnerEvents>
</li>
</value>
</Operation>
<Operation Class="PatchOperationAddModExtension">
<xpath>/Defs/InteractionDef[defName="Rape_Reverse_Beakjob" or defName="Rape_Reverse_Cunnilingus" or defName="Rape_Reverse_Fellatio"]</xpath>
<value>
<li Class="RJWSexperience.Ideology.InteractionDefExtension_HistoryEvents">
<pawnEvents>
<li>RSI_OralSex</li>
<li>RSI_Raped</li>
</pawnEvents>
<partnerEvents>
<!--<li>RSI_OralSex</li>-->
<li>RSI_WasRaped</li>
</partnerEvents>
</li>
</value>
</Operation>
<Operation Class="PatchOperationAddModExtension">
<xpath>/Defs/InteractionDef[defName="Rape_Reverse_Breastjob" or defName="Rape_Reverse_Fingering" or defName="Rape_Reverse_Footjob" or defName="Rape_Reverse_Handjob"]</xpath>
<value>
<li Class="RJWSexperience.Ideology.InteractionDefExtension_HistoryEvents">
<pawnEvents>
<li>RSI_MiscSex</li>
<li>RSI_Raped</li>
</pawnEvents>
<partnerEvents>
<!--<li>RSI_MiscSex</li>-->
<li>RSI_WasRaped</li>
</partnerEvents>
</li>
</value>
</Operation>
<Operation Class="PatchOperationAddModExtension">
<xpath>/Defs/InteractionDef[defName="Rape_Reverse_DoublePenetration" or defName="Rape_Reverse_DoublePenetrationM" or defName="Rape_Reverse_Fisting" or defName="Rape_Reverse_Scissoring"]</xpath>
<value>
<li Class="RJWSexperience.Ideology.InteractionDefExtension_HistoryEvents">
<pawnEvents>
<li>RSI_PromiscuousSex</li>
<li>RSI_Raped</li>
</pawnEvents>
<partnerEvents>
<!--<li>RSI_PromiscuousSex</li>-->
<li>RSI_WasRaped</li>
</partnerEvents>
</li>
</value>
</Operation>
</Patch>