mirror of
https://github.com/amevarashi/RJW-Sexperience.git
synced 2024-08-14 23:54:08 +00:00
Implement HistoryEvent overrides
This commit is contained in:
parent
724bcbe86b
commit
bfddab0cf1
8 changed files with 213 additions and 98 deletions
|
@ -0,0 +1,29 @@
|
|||
using RimWorld;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using Verse;
|
||||
|
||||
namespace RJWSexperience.Ideology
|
||||
{
|
||||
public class HistoryEventDefExtension_PartnerDependentOverrides : DefModExtension
|
||||
{
|
||||
[SuppressMessage("Minor Code Smell", "S1104:Fields should not have public accessibility", Justification = "Field value loaded from XML")]
|
||||
public List<PartnerDependentOverride> overrideRules = new List<PartnerDependentOverride>();
|
||||
|
||||
public class PartnerDependentOverride
|
||||
{
|
||||
[SuppressMessage("Minor Code Smell", "S1104:Fields should not have public accessibility", Justification = "Field value loaded from XML")]
|
||||
public HistoryEventDef historyEventDef;
|
||||
[SuppressMessage("Minor Code Smell", "S1104:Fields should not have public accessibility", Justification = "Field value loaded from XML")]
|
||||
public PartnerFilter filter;
|
||||
|
||||
public bool Applies(Pawn pawn, Pawn partner)
|
||||
{
|
||||
if (filter == null)
|
||||
return false;
|
||||
|
||||
return filter.Applies(pawn, partner);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -37,7 +37,7 @@ namespace RJWSexperience.Ideology
|
|||
return true;
|
||||
}
|
||||
|
||||
public static bool IsIncest(Pawn pawn, Pawn partner, bool close)
|
||||
public static bool IsIncest(Pawn pawn, Pawn partner)
|
||||
{
|
||||
IEnumerable<PawnRelationDef> relations = pawn.GetRelations(partner);
|
||||
if (relations.EnumerableNullOrEmpty())
|
||||
|
@ -45,15 +45,8 @@ namespace RJWSexperience.Ideology
|
|||
|
||||
foreach (PawnRelationDef relation in relations)
|
||||
{
|
||||
if (close)
|
||||
{
|
||||
if (relation.incestOpinionOffset < 0)
|
||||
return true;
|
||||
}
|
||||
else if (relation.familyByBloodRelation)
|
||||
{
|
||||
if (relation.familyByBloodRelation)
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -21,6 +21,10 @@ namespace RJWSexperience.Ideology
|
|||
[SuppressMessage("Minor Code Smell", "S1104:Fields should not have public accessibility", Justification = "Field value loaded from XML")]
|
||||
public List<PawnRelationDef> hasNoneOfRelations;
|
||||
|
||||
private bool initialized = false;
|
||||
private HashSet<PawnRelationDef> hasOneOfRelationsHashed;
|
||||
private HashSet<PawnRelationDef> hasNoneOfRelationsHashed;
|
||||
|
||||
public bool Applies(Pawn pawn, Pawn partner)
|
||||
{
|
||||
if (isAnimal != null && isAnimal != partner.IsAnimal())
|
||||
|
@ -35,34 +39,48 @@ namespace RJWSexperience.Ideology
|
|||
//if (isAlien != null && isAlien != partner)
|
||||
// return false;
|
||||
|
||||
if (!hasOneOfRelations.NullOrEmpty())
|
||||
if (!CheckRelations(pawn, partner))
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
private bool CheckRelations(Pawn pawn, Pawn partner)
|
||||
{
|
||||
if (!initialized)
|
||||
Initialize();
|
||||
|
||||
if (hasNoneOfRelationsHashed == null && hasOneOfRelationsHashed == null)
|
||||
return true;
|
||||
|
||||
IEnumerable<PawnRelationDef> relations = pawn.GetRelations(partner);
|
||||
|
||||
if (hasOneOfRelationsHashed != null)
|
||||
{
|
||||
if (pawn.relations == null)
|
||||
if (relations.EnumerableNullOrEmpty())
|
||||
return false;
|
||||
|
||||
bool found = false;
|
||||
foreach (PawnRelationDef relationDef in hasOneOfRelations)
|
||||
{
|
||||
if (pawn.relations?.DirectRelationExists(relationDef, partner) == true)
|
||||
{
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!found)
|
||||
if (!hasOneOfRelationsHashed.Overlaps(relations))
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!hasNoneOfRelations.NullOrEmpty() && pawn.relations != null)
|
||||
if (hasNoneOfRelationsHashed != null && !relations.EnumerableNullOrEmpty() && hasNoneOfRelationsHashed.Overlaps(relations))
|
||||
{
|
||||
foreach (PawnRelationDef relationDef in hasNoneOfRelations)
|
||||
{
|
||||
if (pawn.relations.DirectRelationExists(relationDef, partner))
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
private void Initialize()
|
||||
{
|
||||
if (!hasNoneOfRelations.NullOrEmpty())
|
||||
hasNoneOfRelationsHashed = new HashSet<PawnRelationDef>(hasNoneOfRelations);
|
||||
|
||||
if (!hasOneOfRelations.NullOrEmpty())
|
||||
hasOneOfRelationsHashed = new HashSet<PawnRelationDef>(hasOneOfRelations);
|
||||
|
||||
initialized = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -16,11 +16,28 @@ namespace RJWSexperience.Ideology.Patches
|
|||
{
|
||||
return new HistoryEvent(def, pawn.Named(HistoryEventArgsNames.Doer), tag.Named(HistoryEventArgsNamesCustom.Tag), partner.Named(HistoryEventArgsNamesCustom.Partner));
|
||||
}
|
||||
|
||||
public static HistoryEvent CreateEvent(this HistoryEventDef def, Pawn pawn)
|
||||
{
|
||||
return new HistoryEvent(def, pawn.Named(HistoryEventArgsNames.Doer));
|
||||
}
|
||||
|
||||
public static HistoryEvent CreateEventWithPartner(this HistoryEventDef def, Pawn pawn, Pawn partner)
|
||||
{
|
||||
HistoryEventDefExtension_PartnerDependentOverrides overrides = def.GetModExtension<HistoryEventDefExtension_PartnerDependentOverrides>();
|
||||
|
||||
if (overrides == null)
|
||||
return new HistoryEvent(def, pawn.Named(HistoryEventArgsNames.Doer), partner.Named(HistoryEventArgsNamesCustom.Partner));
|
||||
|
||||
foreach (var rule in overrides.overrideRules)
|
||||
{
|
||||
if (rule.Applies(pawn, partner))
|
||||
return rule.historyEventDef.CreateEventWithPartner(pawn, partner);
|
||||
}
|
||||
|
||||
return new HistoryEvent(def, pawn.Named(HistoryEventArgsNames.Doer), partner.Named(HistoryEventArgsNamesCustom.Partner));
|
||||
}
|
||||
|
||||
public static Faction GetFactionUsingPrecept(this Pawn baby, out Ideo ideo)
|
||||
{
|
||||
Faction playerfaction = Find.FactionManager.OfPlayer;
|
||||
|
@ -90,56 +107,60 @@ namespace RJWSexperience.Ideology.Patches
|
|||
{
|
||||
public static void Postfix(SexProps props)
|
||||
{
|
||||
Pawn pawn = props.pawn;
|
||||
Pawn partner = props.partner;
|
||||
InteractionDefExtension_HistoryEvents interactionEvents = props.dictionaryKey.GetModExtension<InteractionDefExtension_HistoryEvents>();
|
||||
|
||||
if (props.hasPartner())
|
||||
{
|
||||
if (xxx.is_human(pawn))
|
||||
AfterSexHuman(pawn, partner, props.isRape);
|
||||
else if (xxx.is_human(partner))
|
||||
AfterSexHuman(partner, pawn, false, true);
|
||||
if (xxx.is_human(props.pawn))
|
||||
AfterSexHuman(props.pawn, props.partner, props.isRape);
|
||||
else if (xxx.is_human(props.partner))
|
||||
AfterSexHuman(props.partner, props.pawn, false);
|
||||
|
||||
if (xxx.is_human(props.partner) && props.isRape)
|
||||
{
|
||||
if (props.partner.IsPrisoner)
|
||||
props.partner.guest.will = Math.Max(0, props.partner.guest.will - 0.2f);
|
||||
if (props.partner.IsSlave)
|
||||
RapeEffectSlave(props.partner);
|
||||
}
|
||||
|
||||
if (interactionEvents != null)
|
||||
{
|
||||
foreach (HistoryEventDef eventDef in interactionEvents.pawnEvents)
|
||||
Find.HistoryEventsManager.RecordEvent(eventDef.CreateEventWithPartner(props.pawn, props.partner));
|
||||
|
||||
foreach (HistoryEventDef eventDef in interactionEvents.partnerEvents)
|
||||
Find.HistoryEventsManager.RecordEvent(eventDef.CreateEventWithPartner(props.partner, props.pawn));
|
||||
}
|
||||
}
|
||||
|
||||
InteractionDefExtension_HistoryEvents interactionEvents = props.dictionaryKey.GetModExtension<InteractionDefExtension_HistoryEvents>();
|
||||
if (interactionEvents != null)
|
||||
else
|
||||
{
|
||||
foreach (HistoryEventDef eventDef in interactionEvents.pawnEvents)
|
||||
Find.HistoryEventsManager.RecordEvent(eventDef.CreateEvent(pawn));
|
||||
|
||||
foreach (HistoryEventDef eventDef in interactionEvents.partnerEvents)
|
||||
Find.HistoryEventsManager.RecordEvent(eventDef.CreateEvent(partner));
|
||||
if (interactionEvents != null)
|
||||
{
|
||||
foreach (HistoryEventDef eventDef in interactionEvents.pawnEvents)
|
||||
Find.HistoryEventsManager.RecordEvent(eventDef.CreateEvent(props.pawn));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void AfterSexHuman(Pawn human, Pawn partner, bool rape, bool isHumanReceiving = false)
|
||||
public static void AfterSexHuman(Pawn human, Pawn partner, bool rape)
|
||||
{
|
||||
HistoryEventDef incestEvent = GetIncestTypeEvent(human, partner);
|
||||
Find.HistoryEventsManager.RecordEvent(incestEvent.CreateEvent(human));
|
||||
Find.HistoryEventsManager.RecordEvent(incestEvent.CreateEvent(partner));
|
||||
Find.HistoryEventsManager.RecordEvent(VariousDefOf.RSI_NonIncestuosSex.CreateEventWithPartner(human, partner));
|
||||
Find.HistoryEventsManager.RecordEvent(VariousDefOf.RSI_NonIncestuosSex.CreateEventWithPartner(partner, human));
|
||||
|
||||
if (partner.IsAnimal())
|
||||
{
|
||||
string tag = HETag.Gender(human);
|
||||
if (isHumanReceiving && rape)
|
||||
{
|
||||
tag += HETag.BeenRaped;
|
||||
|
||||
if (human.IsSlave)
|
||||
RapeEffectSlave(human);
|
||||
}
|
||||
|
||||
if (human.Ideo?.IsVeneratedAnimal(partner) ?? false)
|
||||
Find.HistoryEventsManager.RecordEvent(VariousDefOf.SexWithVeneratedAnimal.CreateTaggedEvent(human, tag, partner));
|
||||
Find.HistoryEventsManager.RecordEvent(VariousDefOf.SexWithVeneratedAnimal.CreateEventWithPartner(human, partner));
|
||||
else
|
||||
Find.HistoryEventsManager.RecordEvent(VariousDefOf.SexWithNonVeneratedAnimal.CreateTaggedEvent(human, tag, partner));
|
||||
Find.HistoryEventsManager.RecordEvent(VariousDefOf.SexWithNonVeneratedAnimal.CreateEventWithPartner(human, partner));
|
||||
|
||||
if (human.Ideo != null && human.relations?.DirectRelationExists(PawnRelationDefOf.Bond, partner) == true)
|
||||
Find.HistoryEventsManager.RecordEvent(VariousDefOf.SexWithBondedAnimal.CreateTaggedEvent(human, tag, partner));
|
||||
Find.HistoryEventsManager.RecordEvent(VariousDefOf.SexWithBondedAnimal.CreateEventWithPartner(human, partner));
|
||||
else
|
||||
Find.HistoryEventsManager.RecordEvent(VariousDefOf.SexWithNonBondAnimal.CreateTaggedEvent(human, tag, partner));
|
||||
Find.HistoryEventsManager.RecordEvent(VariousDefOf.SexWithNonBondAnimal.CreateEventWithPartner(human, partner));
|
||||
|
||||
Find.HistoryEventsManager.RecordEvent(VariousDefOf.SexWithAnimal.CreateTaggedEvent(human, tag, partner));
|
||||
Find.HistoryEventsManager.RecordEvent(VariousDefOf.SexWithAnimal.CreateEventWithPartner(human, partner));
|
||||
}
|
||||
else if (xxx.is_human(partner))
|
||||
{
|
||||
|
@ -149,13 +170,11 @@ namespace RJWSexperience.Ideology.Patches
|
|||
{
|
||||
Find.HistoryEventsManager.RecordEvent(VariousDefOf.RapedSlave.CreateTaggedEvent(human, HETag.Rape + HETag.Gender(human), partner));
|
||||
Find.HistoryEventsManager.RecordEvent(VariousDefOf.WasRapedSlave.CreateTaggedEvent(partner, HETag.BeenRaped + HETag.Gender(partner), human));
|
||||
RapeEffectSlave(partner);
|
||||
}
|
||||
else if (partner.IsPrisoner)
|
||||
{
|
||||
Find.HistoryEventsManager.RecordEvent(VariousDefOf.RapedPrisoner.CreateTaggedEvent(human, HETag.Rape + HETag.Gender(human), partner));
|
||||
Find.HistoryEventsManager.RecordEvent(VariousDefOf.WasRapedPrisoner.CreateTaggedEvent(partner, HETag.BeenRaped + HETag.Gender(partner), human));
|
||||
partner.guest.will = Math.Max(0, partner.guest.will - 0.2f);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -166,17 +185,6 @@ namespace RJWSexperience.Ideology.Patches
|
|||
}
|
||||
}
|
||||
|
||||
private static HistoryEventDef GetIncestTypeEvent(Pawn pawn, Pawn partner)
|
||||
{
|
||||
if (IdeoUtility.IsIncest(pawn, partner, true))
|
||||
return VariousDefOf.RSI_CloseRelativeSex;
|
||||
|
||||
if (IdeoUtility.IsIncest(pawn, partner, false))
|
||||
return VariousDefOf.RSI_IncestuosSex;
|
||||
|
||||
return VariousDefOf.RSI_NonIncestuosSex;
|
||||
}
|
||||
|
||||
public static void RapeEffectSlave(Pawn victim)
|
||||
{
|
||||
Need_Suppression suppression = victim.needs.TryGetNeed<Need_Suppression>();
|
||||
|
|
|
@ -12,21 +12,8 @@ namespace RJWSexperience.Ideology.Patches
|
|||
{
|
||||
public static void Postfix(Pawn firstPawn, Pawn secondPawn)
|
||||
{
|
||||
if (IdeoUtility.IsIncest(firstPawn, secondPawn, false))
|
||||
{
|
||||
if (IdeoUtility.IsIncest(firstPawn, secondPawn, true))
|
||||
{
|
||||
Find.HistoryEventsManager.RecordEvent(VariousDefOf.RSI_CloseRelativeMarriage.CreateEvent(firstPawn));
|
||||
Find.HistoryEventsManager.RecordEvent(VariousDefOf.RSI_CloseRelativeMarriage.CreateEvent(secondPawn));
|
||||
}
|
||||
Find.HistoryEventsManager.RecordEvent(VariousDefOf.RSI_IncestuosMarriage.CreateEvent(firstPawn));
|
||||
Find.HistoryEventsManager.RecordEvent(VariousDefOf.RSI_IncestuosMarriage.CreateEvent(secondPawn));
|
||||
}
|
||||
else
|
||||
{
|
||||
Find.HistoryEventsManager.RecordEvent(VariousDefOf.RSI_NonIncestuosMarriage.CreateEvent(firstPawn));
|
||||
Find.HistoryEventsManager.RecordEvent(VariousDefOf.RSI_NonIncestuosMarriage.CreateEvent(secondPawn));
|
||||
}
|
||||
Find.HistoryEventsManager.RecordEvent(VariousDefOf.RSI_NonIncestuosMarriage.CreateEventWithPartner(firstPawn, secondPawn));
|
||||
Find.HistoryEventsManager.RecordEvent(VariousDefOf.RSI_NonIncestuosMarriage.CreateEventWithPartner(secondPawn, firstPawn));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -36,7 +23,7 @@ namespace RJWSexperience.Ideology.Patches
|
|||
public static void Postfix(Pawn otherPawn, Pawn ___pawn, ref float __result)
|
||||
{
|
||||
Ideo ideo = ___pawn.Ideo;
|
||||
if (ideo?.HasPrecept(VariousDefOf.Incestuos_IncestOnly) == true && IdeoUtility.IsIncest(___pawn, otherPawn, false))
|
||||
if (ideo?.HasPrecept(VariousDefOf.Incestuos_IncestOnly) == true && IdeoUtility.IsIncest(___pawn, otherPawn))
|
||||
{
|
||||
__result *= 8f;
|
||||
}
|
||||
|
|
|
@ -43,6 +43,7 @@
|
|||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="GlobalSuppressions.cs" />
|
||||
<Compile Include="Ideology\HistoryEventDefExtension_PartnerDependentOverrides.cs" />
|
||||
<Compile Include="Ideology\InteractionDefExtension_HistoryEvents.cs" />
|
||||
<Compile Include="Ideology\GoodwillSituationWorker_MemeCompatibility.cs" />
|
||||
<Compile Include="Harmony.cs" />
|
||||
|
@ -58,6 +59,7 @@
|
|||
<Compile Include="Ideology\Precepts\DefExtension_ModifyBestialityMtb.cs" />
|
||||
<Compile Include="Ideology\Precepts\DefExtension_ModifyPreference.cs" />
|
||||
<Compile Include="Ideology\Precepts\DefExtension_MultipleMemesRequired.cs" />
|
||||
<Compile Include="Ideology\PartnerFilter.cs" />
|
||||
<Compile Include="Ideology\Precepts\PreceptComp_KnowsMemoryThoughtTagged.cs" />
|
||||
<Compile Include="Ideology\Rituals\JobGiver_GangbangConsensual.cs" />
|
||||
<Compile Include="Ideology\Rituals\LordJob_Rituals.cs" />
|
||||
|
|
|
@ -26,18 +26,8 @@ namespace RJWSexperience.Ideology
|
|||
[MayRequireIdeology] public static readonly HistoryEventDef WasRaped = DefDatabase<HistoryEventDef>.GetNamed("WasRaped");
|
||||
[MayRequireIdeology] public static readonly HistoryEventDef WasRapedSlave = DefDatabase<HistoryEventDef>.GetNamed("WasRapedSlave");
|
||||
[MayRequireIdeology] public static readonly HistoryEventDef WasRapedPrisoner = DefDatabase<HistoryEventDef>.GetNamed("WasRapedPrisoner");
|
||||
[MayRequireIdeology] public static readonly HistoryEventDef VaginalSex = DefDatabase<HistoryEventDef>.GetNamed("VaginalSex");
|
||||
[MayRequireIdeology] public static readonly HistoryEventDef AnalSex = DefDatabase<HistoryEventDef>.GetNamed("AnalSex");
|
||||
[MayRequireIdeology] public static readonly HistoryEventDef OralSex = DefDatabase<HistoryEventDef>.GetNamed("OralSex");
|
||||
[MayRequireIdeology] public static readonly HistoryEventDef MiscSex = DefDatabase<HistoryEventDef>.GetNamed("MiscSex");
|
||||
[MayRequireIdeology] public static readonly HistoryEventDef PromiscuousSex = DefDatabase<HistoryEventDef>.GetNamed("PromiscuousSex");
|
||||
[MayRequireIdeology] public static readonly HistoryEventDef RSI_CloseRelativeMarriage = DefDatabase<HistoryEventDef>.GetNamed("RSI_CloseRelativeMarriage");
|
||||
[MayRequireIdeology] public static readonly HistoryEventDef RSI_IncestuosMarriage = DefDatabase<HistoryEventDef>.GetNamed("RSI_IncestuosMarriage");
|
||||
[MayRequireIdeology] public static readonly HistoryEventDef RSI_NonIncestuosMarriage = DefDatabase<HistoryEventDef>.GetNamed("RSI_NonIncestuosMarriage");
|
||||
[MayRequireIdeology] public static readonly HistoryEventDef RSI_CloseRelativeSex = DefDatabase<HistoryEventDef>.GetNamed("RSI_CloseRelativeSex");
|
||||
[MayRequireIdeology] public static readonly HistoryEventDef RSI_IncestuosSex = DefDatabase<HistoryEventDef>.GetNamed("RSI_IncestuosSex");
|
||||
[MayRequireIdeology] public static readonly HistoryEventDef RSI_NonIncestuosSex = DefDatabase<HistoryEventDef>.GetNamed("RSI_NonIncestuosSex");
|
||||
[MayRequireIdeology] public static readonly HistoryEventDef SexWithCorpse = DefDatabase<HistoryEventDef>.GetNamed("SexWithCorpse");
|
||||
[MayRequireIdeology] public static readonly HistoryEventDef Virgin_TakenF = DefDatabase<HistoryEventDef>.GetNamed("Virgin_TakenF");
|
||||
[MayRequireIdeology] public static readonly HistoryEventDef Virgin_TakenM = DefDatabase<HistoryEventDef>.GetNamed("Virgin_TakenM");
|
||||
[MayRequireIdeology] public static readonly HistoryEventDef Virgin_TookF = DefDatabase<HistoryEventDef>.GetNamed("Virgin_TookF");
|
||||
|
|
|
@ -21,6 +21,50 @@
|
|||
<HistoryEventDef>
|
||||
<defName>RSI_NonIncestuosMarriage</defName>
|
||||
<label>Non-incestuos marriage</label>
|
||||
<modExtensions>
|
||||
<li Class="RJWSexperience.Ideology.HistoryEventDefExtension_PartnerDependentOverrides">
|
||||
<overrideRules>
|
||||
<li>
|
||||
<filter>
|
||||
<hasOneOfRelations>
|
||||
<li>Parent</li>
|
||||
<li>Child</li>
|
||||
<li>Sibling</li>
|
||||
<li>HalfSibling</li>
|
||||
<li>Grandparent</li>
|
||||
<li>Grandchild</li>
|
||||
<li>NephewOrNiece</li>
|
||||
<li>UncleOrAunt</li>
|
||||
</hasOneOfRelations>
|
||||
</filter>
|
||||
<historyEventDef>RSI_CloseRelativeMarriage</historyEventDef>
|
||||
</li>
|
||||
<li>
|
||||
<filter>
|
||||
<hasOneOfRelations>
|
||||
<li>Parent</li>
|
||||
<li>Child</li>
|
||||
<li>Sibling</li>
|
||||
<li>HalfSibling</li>
|
||||
<li>Grandparent</li>
|
||||
<li>Grandchild</li>
|
||||
<li>NephewOrNiece</li>
|
||||
<li>UncleOrAunt</li>
|
||||
<li>GreatGrandparent</li>
|
||||
<li>GreatGrandchild</li>
|
||||
<li>GranduncleOrGrandaunt</li>
|
||||
<li>GrandnephewOrGrandniece</li>
|
||||
<li>CousinOnceRemoved</li>
|
||||
<li>SecondCousin</li>
|
||||
<li>Cousin</li>
|
||||
<li>Kin</li>
|
||||
</hasOneOfRelations>
|
||||
</filter>
|
||||
<historyEventDef>RSI_IncestuosMarriage</historyEventDef>
|
||||
</li>
|
||||
</overrideRules>
|
||||
</li>
|
||||
</modExtensions>
|
||||
</HistoryEventDef>
|
||||
|
||||
<HistoryEventDef>
|
||||
|
@ -36,6 +80,50 @@
|
|||
<HistoryEventDef>
|
||||
<defName>RSI_NonIncestuosSex</defName>
|
||||
<label>Non-incestuos sex</label>
|
||||
<modExtensions>
|
||||
<li Class="RJWSexperience.Ideology.HistoryEventDefExtension_PartnerDependentOverrides">
|
||||
<overrideRules>
|
||||
<li>
|
||||
<filter>
|
||||
<hasOneOfRelations>
|
||||
<li>Parent</li>
|
||||
<li>Child</li>
|
||||
<li>Sibling</li>
|
||||
<li>HalfSibling</li>
|
||||
<li>Grandparent</li>
|
||||
<li>Grandchild</li>
|
||||
<li>NephewOrNiece</li>
|
||||
<li>UncleOrAunt</li>
|
||||
</hasOneOfRelations>
|
||||
</filter>
|
||||
<historyEventDef>RSI_CloseRelativeSex</historyEventDef>
|
||||
</li>
|
||||
<li>
|
||||
<filter>
|
||||
<hasOneOfRelations>
|
||||
<li>Parent</li>
|
||||
<li>Child</li>
|
||||
<li>Sibling</li>
|
||||
<li>HalfSibling</li>
|
||||
<li>Grandparent</li>
|
||||
<li>Grandchild</li>
|
||||
<li>NephewOrNiece</li>
|
||||
<li>UncleOrAunt</li>
|
||||
<li>GreatGrandparent</li>
|
||||
<li>GreatGrandchild</li>
|
||||
<li>GranduncleOrGrandaunt</li>
|
||||
<li>GrandnephewOrGrandniece</li>
|
||||
<li>CousinOnceRemoved</li>
|
||||
<li>SecondCousin</li>
|
||||
<li>Cousin</li>
|
||||
<li>Kin</li>
|
||||
</hasOneOfRelations>
|
||||
</filter>
|
||||
<historyEventDef>RSI_IncestuosSex</historyEventDef>
|
||||
</li>
|
||||
</overrideRules>
|
||||
</li>
|
||||
</modExtensions>
|
||||
</HistoryEventDef>
|
||||
|
||||
<!-- Precepts -->
|
||||
|
|
Loading…
Reference in a new issue