Refactor Submissive precepts

This commit is contained in:
amevarashi 2022-07-08 19:35:05 +05:00
parent 03ea73c82e
commit 6941293212
10 changed files with 203 additions and 109 deletions

View file

@ -15,6 +15,8 @@ namespace RJWSexperience.Ideology
[SuppressMessage("Minor Code Smell", "S1104:Fields should not have public accessibility", Justification = "Field value loaded from XML")]
public bool? isSlave;
[SuppressMessage("Minor Code Smell", "S1104:Fields should not have public accessibility", Justification = "Field value loaded from XML")]
public bool? isPrisoner;
[SuppressMessage("Minor Code Smell", "S1104:Fields should not have public accessibility", Justification = "Field value loaded from XML")]
public bool? isAlien;
[SuppressMessage("Minor Code Smell", "S1104:Fields should not have public accessibility", Justification = "Field value loaded from XML")]
public List<PawnRelationDef> hasOneOfRelations;
@ -36,6 +38,9 @@ namespace RJWSexperience.Ideology
if (isSlave != null && isSlave != partner.IsSlave)
return false;
if (isPrisoner != null && isPrisoner != partner.IsPrisoner)
return false;
//if (isAlien != null && isAlien != partner)
// return false;

View file

@ -1,4 +1,5 @@
using HarmonyLib;
using RimWorld;
using rjw;
using RJWSexperience.Ideology.Precepts;
using Verse;
@ -20,8 +21,15 @@ namespace RJWSexperience.Ideology.Patches
{
public static void Postfix(Pawn pawn, ref float __result)
{
if (__result > 0f && pawn.Ideo != null) // ideo is null if don't have dlc
__result *= IdeoUtility.GetPreceptsMtbMultiplier<DefExtension_ModifyRapeCPMtb>(pawn.Ideo);
if (__result < 0f || pawn.Ideo == null) // ideo is null if don't have dlc
return;
if (!VariousDefOf.RSI_Raped.CreateEvent(pawn).DoerWillingToDo())
{
__result = -2f;
return;
}
__result *= IdeoUtility.GetPreceptsMtbMultiplier<DefExtension_ModifyRapeCPMtb>(pawn.Ideo);
}
}
[HarmonyPatch(typeof(ThinkNode_ChancePerHour_Necro), "MtbHours")]
@ -29,8 +37,15 @@ namespace RJWSexperience.Ideology.Patches
{
public static void Postfix(Pawn pawn, ref float __result)
{
if (__result > 0f && pawn.Ideo != null) // ideo is null if don't have dlc
__result *= IdeoUtility.GetPreceptsMtbMultiplier<DefExtension_ModifyNecroMtb>(pawn.Ideo);
if (__result < 0f || pawn.Ideo == null) // ideo is null if don't have dlc
return;
if (!VariousDefOf.SexWithCorpse.CreateEvent(pawn).DoerWillingToDo())
{
__result = -2f;
return;
}
__result *= IdeoUtility.GetPreceptsMtbMultiplier<DefExtension_ModifyNecroMtb>(pawn.Ideo);
}
}

View file

@ -3,7 +3,6 @@ using RimWorld;
using rjw;
using rjw.Modules.Interactions.Internals.Implementation;
using rjw.Modules.Interactions.Objects;
using RJWSexperience.Ideology.HistoryEvents;
using RJWSexperience.Ideology.Precepts;
using System;
using System.Collections.Generic;
@ -104,21 +103,14 @@ namespace RJWSexperience.Ideology.Patches
{
if (rape)
{
VariousDefOf.RSI_Raped.RecordEventWithPartner(human, partner);
if (partner.IsSlave)
{
Find.HistoryEventsManager.RecordEvent(VariousDefOf.RapedSlave.CreateTaggedEvent(human, Tag.Gender(human), partner));
Find.HistoryEventsManager.RecordEvent(VariousDefOf.WasRapedSlave.CreateTaggedEvent(partner, Tag.Gender(partner), human));
}
VariousDefOf.WasRapedSlave.RecordEventWithPartner(partner, human);
else if (partner.IsPrisoner)
{
Find.HistoryEventsManager.RecordEvent(VariousDefOf.RapedPrisoner.CreateTaggedEvent(human, Tag.Gender(human), partner));
Find.HistoryEventsManager.RecordEvent(VariousDefOf.WasRapedPrisoner.CreateTaggedEvent(partner, Tag.Gender(partner), human));
}
VariousDefOf.WasRapedPrisoner.RecordEventWithPartner(partner, human);
else
{
Find.HistoryEventsManager.RecordEvent(VariousDefOf.Raped.CreateTaggedEvent(human, Tag.Gender(human), partner));
Find.HistoryEventsManager.RecordEvent(VariousDefOf.WasRaped.CreateTaggedEvent(partner, Tag.Gender(partner), human));
}
VariousDefOf.WasRaped.RecordEventWithPartner(partner, human);
}
}
}
@ -147,22 +139,20 @@ namespace RJWSexperience.Ideology.Patches
if (interactionEvents == null)
return;
Ideo ideo = dominant.Pawn.Ideo;
if (ideo != null)
__result.Dominant = PreceptSextype(ideo, dominant.Pawn.GetStatValue(xxx.sex_drive_stat), __result.Dominant, interactionEvents.pawnEvents);
if (dominant.Pawn.Ideo != null)
__result.Dominant = PreceptSextype(dominant.Pawn, submissive.Pawn, __result.Dominant, interactionEvents.pawnEvents);
ideo = submissive.Pawn.Ideo;
if (ideo != null)
__result.Submissive = PreceptSextype(ideo, submissive.Pawn.GetStatValue(xxx.sex_drive_stat), __result.Submissive, interactionEvents.partnerEvents);
if (submissive.Pawn.Ideo != null)
__result.Submissive = PreceptSextype(submissive.Pawn, dominant.Pawn, __result.Submissive, interactionEvents.partnerEvents);
}
public static float PreceptSextype(Ideo ideo, float sexdrive, float score, List<HistoryEventDef> historyEventDefs)
public static float PreceptSextype(Pawn pawn, Pawn partner, float score, List<HistoryEventDef> historyEventDefs)
{
foreach(HistoryEventDef eventDef in historyEventDefs)
{
if (ideo.MemberWillingToDo(new HistoryEvent(eventDef)))
if (eventDef.CreateEventWithPartner(pawn, partner).DoerWillingToDo())
{
float mult = 8.0f * Math.Max(0.3f, 1 / Math.Max(0.01f, sexdrive));
float mult = 8.0f * Math.Max(0.3f, 1 / Math.Max(0.01f, pawn.GetStatValue(xxx.sex_drive_stat)));
return score * mult;
}
}

View file

@ -0,0 +1,19 @@
using RimWorld;
using System.Diagnostics.CodeAnalysis;
using Verse;
namespace RJWSexperience.Ideology.Precepts
{
public class Comp_KnowsMemoryThought_Gendered : PreceptComp_KnowsMemoryThought
{
[SuppressMessage("Minor Code Smell", "S1104:Fields should not have public accessibility", Justification = "Field value loaded from XML")]
public Gender doersGender;
public override void Notify_MemberWitnessedAction(HistoryEvent ev, Precept precept, Pawn member)
{
Pawn doer = ev.args.GetArg<Pawn>(HistoryEventArgsNames.Doer);
if (doer.gender == doersGender)
base.Notify_MemberWitnessedAction(ev, precept, member);
}
}
}

View file

@ -0,0 +1,48 @@
using RimWorld;
using System.Diagnostics.CodeAnalysis;
using Verse;
namespace RJWSexperience.Ideology.Precepts
{
public class Comp_SelfTookMemoryThought_Gendered : PreceptComp_SelfTookMemoryThought
{
[SuppressMessage("Minor Code Smell", "S1104:Fields should not have public accessibility", Justification = "Field value loaded from XML")]
public Gender gender;
public override void Notify_MemberTookAction(HistoryEvent ev, Precept precept, bool canApplySelfTookThoughts)
{
Pawn doer = ev.args.GetArg<Pawn>(HistoryEventArgsNames.Doer);
if (doer.gender == gender)
TakeThought(ev, precept, canApplySelfTookThoughts, doer);
}
/// <summary>
/// This is a copy of base.Notify_MemberTookAction, but with partner handling
/// </summary>
protected void TakeThought(HistoryEvent ev, Precept precept, bool canApplySelfTookThoughts, Pawn doer)
{
if (ev.def != eventDef || !canApplySelfTookThoughts)
{
return;
}
Pawn partner = ev.args.GetArg<Pawn>(HistoryEvents.ArgsNamesCustom.Partner);
if (doer.needs?.mood != null && (!onlyForNonSlaves || !doer.IsSlave))
{
if (thought.minExpectationForNegativeThought != null && ExpectationsUtility.CurrentExpectationFor(doer).order < thought.minExpectationForNegativeThought.order)
{
return;
}
Thought_Memory thought_Memory = ThoughtMaker.MakeThought(thought, precept);
if (thought_Memory is Thought_KilledInnocentAnimal thought_KilledInnocentAnimal && ev.args.TryGetArg<Pawn>(HistoryEventArgsNames.Victim, out Pawn animal))
{
thought_KilledInnocentAnimal.SetAnimal(animal);
}
if (thought_Memory is Thought_MemoryObservation thought_MemoryObservation && ev.args.TryGetArg<Corpse>(HistoryEventArgsNames.Subject, out Corpse target))
{
thought_MemoryObservation.Target = target;
}
doer.needs.mood.thoughts.memories.TryGainMemory(thought_Memory, partner);
}
}
}
}

View file

@ -53,6 +53,8 @@
<Compile Include="Ideology\HistoryEvents\ArgsNamesCustom.cs" />
<Compile Include="Ideology\IssueUtility.cs" />
<Compile Include="Ideology\Keyed.cs" />
<Compile Include="Ideology\Precepts\Comp_SelfTookMemoryThought_Gendered.cs" />
<Compile Include="Ideology\Precepts\Comp_KnowsMemoryThought_Gendered.cs" />
<Compile Include="Ideology\RJWUtility_Ideo.cs" />
<Compile Include="Ideology\Patches\RJW_Patch_ChancePerHour.cs" />
<Compile Include="Ideology\Precepts\DefExtension_ModifyMtb.cs" />

View file

@ -17,14 +17,13 @@ namespace RJWSexperience.Ideology
[MayRequireIdeology] public static readonly MemeDef Rapist;
[MayRequireIdeology] public static readonly MemeDef Necrophile;
[MayRequireIdeology] public static readonly HistoryEventDef RSI_SexWithAnimal;
[MayRequireIdeology] public static readonly HistoryEventDef Raped;
[MayRequireIdeology] public static readonly HistoryEventDef RapedSlave;
[MayRequireIdeology] public static readonly HistoryEventDef RapedPrisoner;
[MayRequireIdeology] public static readonly HistoryEventDef RSI_Raped;
[MayRequireIdeology] public static readonly HistoryEventDef WasRaped;
[MayRequireIdeology] public static readonly HistoryEventDef WasRapedSlave;
[MayRequireIdeology] public static readonly HistoryEventDef WasRapedPrisoner;
[MayRequireIdeology] public static readonly HistoryEventDef RSI_NonIncestuosMarriage;
[MayRequireIdeology] public static readonly HistoryEventDef RSI_NonIncestuosSex;
[MayRequireIdeology] public static readonly HistoryEventDef SexWithCorpse;
[MayRequireIdeology] public static readonly HistoryEventDef Virgin_TakenF;
[MayRequireIdeology] public static readonly HistoryEventDef Virgin_TakenM;
[MayRequireIdeology] public static readonly HistoryEventDef Virgin_TookF;

View file

@ -28,6 +28,9 @@
<li>Necrophile</li>
</conflictingMemes>
<comps>
<li Class="PreceptComp_UnwillingToDo">
<eventDef>SexWithCorpse</eventDef>
</li>
<li Class="PreceptComp_SelfTookMemoryThought">
<eventDef>SexWithCorpse</eventDef>
<thought>Necrophilia_Abhorrent</thought>
@ -37,11 +40,6 @@
<thought>Necrophilia_Know_Abhorrent</thought>
</li>
</comps>
<modExtensions>
<li Class="RJWSexperience.Ideology.Precepts.DefExtension_ModifyNecroMtb">
<disable>true</disable>
</li>
</modExtensions>
</PreceptDef>
<PreceptDef>

View file

@ -9,17 +9,35 @@
</IssueDef>
<HistoryEventDef>
<defName>Raped</defName>
<defName>RSI_Raped</defName>
<label>raped</label>
<modExtensions>
<li Class="RJWSexperience.Ideology.HistoryEvents.DefExtension_PartnerDependentOverrides">
<overrideRules>
<li>
<filter>
<isSlave>true</isSlave>
</filter>
<historyEventDef>RSI_RapedSlave</historyEventDef>
</li>
<li>
<filter>
<isPrisoner>true</isPrisoner>
</filter>
<historyEventDef>RSI_RapedPrisoner</historyEventDef>
</li>
</overrideRules>
</li>
</modExtensions>
</HistoryEventDef>
<HistoryEventDef>
<defName>RapedSlave</defName>
<defName>RSI_RapedSlave</defName>
<label>raped slave</label>
</HistoryEventDef>
<HistoryEventDef>
<defName>RapedPrisoner</defName>
<defName>RSI_RapedPrisoner</defName>
<label>raped prisoner</label>
</HistoryEventDef>
@ -37,6 +55,7 @@
<defName>WasRapedPrisoner</defName>
<label>was raped</label>
</HistoryEventDef>
<!-- Precepts -->
<PreceptDef>
@ -59,41 +78,39 @@
<li>Collectivist</li>
</associatedMemes>
<comps>
<li Class="PreceptComp_UnwillingToDo">
<eventDef>RSI_Raped</eventDef>
</li>
<li Class="PreceptComp_SelfTookMemoryThought">
<eventDef>Raped</eventDef>
<eventDef>RSI_Raped</eventDef>
<thought>Rape_Abhorrent</thought>
</li>
<li Class="PreceptComp_KnowsMemoryThought">
<eventDef>Raped</eventDef>
<eventDef>RSI_Raped</eventDef>
<thought>Rape_Know_Abhorrent</thought>
<description>Someone raped other</description>
</li>
<li Class="PreceptComp_SelfTookMemoryThought">
<eventDef>RapedPrisoner</eventDef>
<eventDef>RSI_RapedPrisoner</eventDef>
<thought>Rape_Horrible</thought>
<description>Raped prisoner</description>
</li>
<li Class="PreceptComp_KnowsMemoryThought">
<eventDef>RapedPrisoner</eventDef>
<eventDef>RSI_RapedPrisoner</eventDef>
<thought>Rape_Know_Horrible</thought>
<description>Someone raped prisoner</description>
</li>
<li Class="PreceptComp_SelfTookMemoryThought">
<eventDef>RapedSlave</eventDef>
<eventDef>RSI_RapedSlave</eventDef>
<thought>Rape_Disapproved</thought>
<description>Raped slave</description>
</li>
<li Class="PreceptComp_KnowsMemoryThought">
<eventDef>RapedSlave</eventDef>
<eventDef>RSI_RapedSlave</eventDef>
<thought>Rape_Know_Disapproved</thought>
<description>Someone raped slave</description>
</li>
</comps>
<modExtensions>
<li Class="RJWSexperience.Ideology.Precepts.DefExtension_ModifyRapeCPMtb">
<disable>true</disable>
</li>
</modExtensions>
</PreceptDef>
<PreceptDef>
@ -116,21 +133,21 @@
</associatedMemes>
<comps>
<li Class="PreceptComp_SelfTookMemoryThought">
<eventDef>Raped</eventDef>
<eventDef>RSI_Raped</eventDef>
<thought>Rape_Horrible</thought>
</li>
<li Class="PreceptComp_KnowsMemoryThought">
<eventDef>Raped</eventDef>
<eventDef>RSI_Raped</eventDef>
<thought>Rape_Know_Horrible</thought>
<description>Someone raped other</description>
</li>
<li Class="PreceptComp_SelfTookMemoryThought">
<eventDef>RapedPrisoner</eventDef>
<eventDef>RSI_RapedPrisoner</eventDef>
<thought>Rape_Disapproved</thought>
<description>Raped prisoner</description>
</li>
<li Class="PreceptComp_KnowsMemoryThought">
<eventDef>RapedPrisoner</eventDef>
<eventDef>RSI_RapedPrisoner</eventDef>
<thought>Rape_Know_Disapproved</thought>
<description>Someone raped prisoner</description>
</li>
@ -162,11 +179,11 @@
</associatedMemes>
<comps>
<li Class="PreceptComp_SelfTookMemoryThought">
<eventDef>Raped</eventDef>
<eventDef>RSI_Raped</eventDef>
<thought>Rape_Disapproved</thought>
</li>
<li Class="PreceptComp_KnowsMemoryThought">
<eventDef>Raped</eventDef>
<eventDef>RSI_Raped</eventDef>
<thought>Rape_Know_Disapproved</thought>
<description>Someone raped other</description>
</li>
@ -208,34 +225,34 @@
</statFactors>
<comps>
<li Class="PreceptComp_SelfTookMemoryThought">
<eventDef>Raped</eventDef>
<eventDef>RSI_Raped</eventDef>
<thought>BloodlustStoleSomeLovin</thought>
<onlyForNonSlaves>true</onlyForNonSlaves>
</li>
<li Class="PreceptComp_KnowsMemoryThought">
<eventDef>Raped</eventDef>
<eventDef>RSI_Raped</eventDef>
<thought>Rape_Know_Honorable</thought>
<description>Someone raped other</description>
<onlyForNonSlaves>true</onlyForNonSlaves>
</li>
<li Class="PreceptComp_SelfTookMemoryThought">
<eventDef>RapedPrisoner</eventDef>
<eventDef>RSI_RapedPrisoner</eventDef>
<thought>BloodlustStoleSomeLovin</thought>
<onlyForNonSlaves>true</onlyForNonSlaves>
</li>
<li Class="PreceptComp_KnowsMemoryThought">
<eventDef>RapedPrisoner</eventDef>
<eventDef>RSI_RapedPrisoner</eventDef>
<thought>Rape_Know_Honorable</thought>
<description>Someone raped other</description>
<onlyForNonSlaves>true</onlyForNonSlaves>
</li>
<li Class="PreceptComp_SelfTookMemoryThought">
<eventDef>RapedSlave</eventDef>
<eventDef>RSI_RapedSlave</eventDef>
<thought>BloodlustStoleSomeLovin</thought>
<onlyForNonSlaves>true</onlyForNonSlaves>
</li>
<li Class="PreceptComp_KnowsMemoryThought">
<eventDef>RapedSlave</eventDef>
<eventDef>RSI_RapedSlave</eventDef>
<thought>Rape_Know_Honorable</thought>
<description>Someone raped other</description>
<onlyForNonSlaves>true</onlyForNonSlaves>

View file

@ -32,53 +32,54 @@
<li>FemaleSupremacy</li>
</requiredMemes>
<comps>
<li Class="RJWSexperience.Ideology.Precepts.PreceptComp_SelfTookThoughtTagged">
<li Class="PreceptComp_UnwillingToDo_Gendered">
<eventDef>RSI_Raped</eventDef>
<gender>Male</gender>
</li>
<li Class="RJWSexperience.Ideology.Precepts.Comp_SelfTookMemoryThought_Gendered">
<eventDef>WasRaped</eventDef>
<thought>BeenRaped_Submissive</thought>
<tag>Male</tag>
<gender>Male</gender>
</li>
<li Class="RJWSexperience.Ideology.Precepts.PreceptComp_SelfTookThoughtTagged">
<li Class="RJWSexperience.Ideology.Precepts.Comp_SelfTookMemoryThought_Gendered">
<eventDef>WasRaped</eventDef>
<thought>BeenRaped_NotSubmissive</thought>
<tag>Female</tag>
<gender>Female</gender>
</li>
<li Class="RJWSexperience.Ideology.Precepts.PreceptComp_KnowsMemoryThoughtTagged">
<eventDef>Raped</eventDef>
<li Class="RJWSexperience.Ideology.Precepts.Comp_KnowsMemoryThought_Gendered">
<eventDef>RSI_Raped</eventDef>
<thought>Raped_Know_NotBeingSubmissive</thought>
<description>not obedient</description>
<tag>Female</tag>
<doersGender>Male</doersGender>
</li>
<li Class="RJWSexperience.Ideology.Precepts.PreceptComp_SelfTookThoughtTagged">
<li Class="RJWSexperience.Ideology.Precepts.Comp_SelfTookMemoryThought_Gendered">
<eventDef>WasRapedPrisoner</eventDef>
<thought>BeenRaped_Submissive</thought>
<tag>Male</tag>
<gender>Male</gender>
</li>
<li Class="RJWSexperience.Ideology.Precepts.PreceptComp_SelfTookThoughtTagged">
<li Class="RJWSexperience.Ideology.Precepts.Comp_SelfTookMemoryThought_Gendered">
<eventDef>WasRapedPrisoner</eventDef>
<thought>BeenRaped_NotSubmissive</thought>
<tag>Female</tag>
<gender>Female</gender>
</li>
<li Class="RJWSexperience.Ideology.Precepts.PreceptComp_KnowsMemoryThoughtTagged">
<eventDef>RapedPrisoner</eventDef>
<li Class="RJWSexperience.Ideology.Precepts.Comp_KnowsMemoryThought_Gendered">
<eventDef>RSI_RapedPrisoner</eventDef>
<thought>Raped_Know_NotBeingSubmissive</thought>
<description>not obedient</description>
<tag>Female</tag>
<doersGender>Male</doersGender>
</li>
<li Class="RJWSexperience.Ideology.Precepts.PreceptComp_SelfTookThoughtTagged">
<li Class="RJWSexperience.Ideology.Precepts.Comp_SelfTookMemoryThought_Gendered">
<eventDef>WasRapedSlave</eventDef>
<thought>BeenRaped_Submissive</thought>
<tag>Male</tag>
<gender>Male</gender>
</li>
<li Class="RJWSexperience.Ideology.Precepts.PreceptComp_SelfTookThoughtTagged">
<li Class="RJWSexperience.Ideology.Precepts.Comp_SelfTookMemoryThought_Gendered">
<eventDef>WasRapedSlave</eventDef>
<thought>BeenRaped_NotSubmissive</thought>
<tag>Female</tag>
<gender>Female</gender>
</li>
<li Class="RJWSexperience.Ideology.Precepts.PreceptComp_KnowsMemoryThoughtTagged">
<eventDef>RapedSlave</eventDef>
<li Class="RJWSexperience.Ideology.Precepts.Comp_KnowsMemoryThought_Gendered">
<eventDef>RSI_RapedSlave</eventDef>
<thought>Raped_Know_NotBeingSubmissive</thought>
<description>not obedient</description>
<tag>Female</tag>
<doersGender>Male</doersGender>
</li>
</comps>
</PreceptDef>
@ -95,60 +96,60 @@
<li>MaleSupremacy</li>
</requiredMemes>
<comps>
<li Class="RJWSexperience.Ideology.Precepts.PreceptComp_SelfTookThoughtTagged">
<li Class="PreceptComp_UnwillingToDo_Gendered">
<eventDef>RSI_Raped</eventDef>
<gender>Female</gender>
</li>
<li Class="RJWSexperience.Ideology.Precepts.Comp_SelfTookMemoryThought_Gendered">
<eventDef>WasRaped</eventDef>
<thought>BeenRaped_Submissive</thought>
<tag>Female</tag>
<gender>Female</gender>
</li>
<li Class="RJWSexperience.Ideology.Precepts.PreceptComp_SelfTookThoughtTagged">
<li Class="RJWSexperience.Ideology.Precepts.Comp_SelfTookMemoryThought_Gendered">
<eventDef>WasRaped</eventDef>
<thought>BeenRaped_NotSubmissive</thought>
<tag>Male</tag>
<gender>Male</gender>
</li>
<li Class="RJWSexperience.Ideology.Precepts.PreceptComp_KnowsMemoryThoughtTagged">
<eventDef>Raped</eventDef>
<li Class="RJWSexperience.Ideology.Precepts.Comp_KnowsMemoryThought_Gendered">
<eventDef>RSI_Raped</eventDef>
<thought>Raped_Know_NotBeingSubmissive</thought>
<description>not obedient</description>
<tag>Male</tag>
<doersGender>Female</doersGender>
</li>
<li Class="RJWSexperience.Ideology.Precepts.PreceptComp_SelfTookThoughtTagged">
<li Class="RJWSexperience.Ideology.Precepts.Comp_SelfTookMemoryThought_Gendered">
<eventDef>WasRapedPrisoner</eventDef>
<thought>BeenRaped_Submissive</thought>
<tag>Female</tag>
<gender>Female</gender>
</li>
<li Class="RJWSexperience.Ideology.Precepts.PreceptComp_SelfTookThoughtTagged">
<li Class="RJWSexperience.Ideology.Precepts.Comp_SelfTookMemoryThought_Gendered">
<eventDef>WasRapedPrisoner</eventDef>
<thought>BeenRaped_NotSubmissive</thought>
<tag>Male</tag>
<gender>Male</gender>
</li>
<li Class="RJWSexperience.Ideology.Precepts.PreceptComp_KnowsMemoryThoughtTagged">
<eventDef>RapedPrisoner</eventDef>
<li Class="RJWSexperience.Ideology.Precepts.Comp_KnowsMemoryThought_Gendered">
<eventDef>RSI_RapedPrisoner</eventDef>
<thought>Raped_Know_NotBeingSubmissive</thought>
<description>not obedient</description>
<tag>Male</tag>
<doersGender>Female</doersGender>
</li>
<li Class="RJWSexperience.Ideology.Precepts.PreceptComp_SelfTookThoughtTagged">
<li Class="RJWSexperience.Ideology.Precepts.Comp_SelfTookMemoryThought_Gendered">
<eventDef>WasRapedSlave</eventDef>
<thought>BeenRaped_Submissive</thought>
<tag>Female</tag>
<gender>Female</gender>
</li>
<li Class="RJWSexperience.Ideology.Precepts.PreceptComp_SelfTookThoughtTagged">
<li Class="RJWSexperience.Ideology.Precepts.Comp_SelfTookMemoryThought_Gendered">
<eventDef>WasRapedSlave</eventDef>
<thought>BeenRaped_NotSubmissive</thought>
<tag>Male</tag>
<gender>Male</gender>
</li>
<li Class="RJWSexperience.Ideology.Precepts.PreceptComp_KnowsMemoryThoughtTagged">
<eventDef>RapedSlave</eventDef>
<li Class="RJWSexperience.Ideology.Precepts.Comp_KnowsMemoryThought_Gendered">
<eventDef>RSI_RapedSlave</eventDef>
<thought>Raped_Know_NotBeingSubmissive</thought>
<description>not obedient</description>
<tag>Male</tag>
<doersGender>Female</doersGender>
</li>
</comps>
</PreceptDef>
<!-- Thoughts -->
<ThoughtDef>
<defName>BeenRaped_Submissive</defName>