diff --git a/1.4/Assemblies/RJW_Menstruation.dll b/1.4/Assemblies/RJW_Menstruation.dll index 2ac459a..f9d70aa 100644 Binary files a/1.4/Assemblies/RJW_Menstruation.dll and b/1.4/Assemblies/RJW_Menstruation.dll differ diff --git a/1.4/Defs/ThoughtDefs/Thoughts_sex.xml b/1.4/Defs/ThoughtDefs/Thoughts_sex.xml index e35d3e8..0b0bf12 100644 --- a/1.4/Defs/ThoughtDefs/Thoughts_sex.xml +++ b/1.4/Defs/ThoughtDefs/Thoughts_sex.xml @@ -30,6 +30,10 @@ 1 + +
  • CameInsideMIdeo
  • +
  • CameInsideM
  • +
    @@ -63,6 +67,9 @@ 5 + +
  • CameInsideFIdeo
  • +
    @@ -80,6 +87,16 @@ -10 + +
  • HaterCameInsideFEstrus
  • +
  • CameInsideF
  • +
  • HaterCameInsideFSafe
  • +
  • CameInsideFLowFert
  • +
  • CameInsideFFetishSafe
  • +
  • HaterCameInsideFIdeo
  • +
  • CameInsideFFetish
  • +
  • CameInsideFIdeo
  • +
    @@ -93,10 +110,19 @@
  • What was I thinking, letting him do that? - -2 + -3 -5
  • + +
  • CameInsideF
  • +
  • HaterCameInsideFSafe
  • +
  • CameInsideFLowFert
  • +
  • CameInsideFFetishSafe
  • +
  • HaterCameInsideFIdeo
  • +
  • CameInsideFFetish
  • +
  • CameInsideFIdeo
  • +
    @@ -113,6 +139,12 @@ -1 + +
  • CameInsideFFetishSafe
  • +
  • HaterCameInsideFIdeo
  • +
  • CameInsideFFetish
  • +
  • CameInsideFIdeo
  • +
    @@ -130,6 +162,14 @@ -2 + +
  • HaterCameInsideFSafe
  • +
  • CameInsideFLowFert
  • +
  • CameInsideFFetishSafe
  • +
  • HaterCameInsideFIdeo
  • +
  • CameInsideFFetish
  • +
  • CameInsideFIdeo
  • +
    @@ -147,6 +187,11 @@ 1 + +
  • HaterCameInsideFIdeo
  • +
  • CameInsideFFetish
  • +
  • CameInsideFIdeo
  • +
    @@ -164,6 +209,13 @@ -5 + +
  • CameInsideFLowFert
  • +
  • CameInsideFFetishSafe
  • +
  • HaterCameInsideFIdeo
  • +
  • CameInsideFFetish
  • +
  • CameInsideFIdeo
  • +
    @@ -226,7 +278,7 @@ - + EggRestorationReceived Thought_Memory 4 @@ -239,6 +291,77 @@ - - + + + CameInsideMIdeo + Thought_MemorySocial + 1.0 + 5 + 0.4 + +
  • + + It is my duty to make her pregnant. + 3 + 2 +
  • +
    + +
  • CameInsideM
  • +
    +
    + + + CameInsideFIdeo + Thought_MemorySocial + 3.0 + 5 + 0.1 + 1 + +
  • + + I hope this makes me pregnant like should be. + 15 + 10 +
  • +
    +
    + + + HaterCameInsideFIdeo + Thought_MemorySocial + 3.0 + 5 + 0.1 + 1 + +
  • + + I know I should become pregnant, but does it have to be his? + 5 + 2 +
  • +
    + +
  • CameInsideFFetish
  • +
  • CameInsideFIdeo
  • +
    +
    + + + HateTookContraceptivePillIdeo + Thought_Memory + 7.0 + 5 + 0.1 + +
  • + + My beliefs demand I become pregnant. + -5 +
  • +
    +
    + diff --git a/1.4/source/RJW_Menstruation/RJW_Menstruation/DrugOutcomeDoers.cs b/1.4/source/RJW_Menstruation/RJW_Menstruation/DrugOutcomeDoers.cs index b618abe..33e4e11 100644 --- a/1.4/source/RJW_Menstruation/RJW_Menstruation/DrugOutcomeDoers.cs +++ b/1.4/source/RJW_Menstruation/RJW_Menstruation/DrugOutcomeDoers.cs @@ -89,7 +89,7 @@ namespace RJW_Menstruation else m.moodPowerFactor = 0.3f; } - if (pawn.IsProPregnancy()) pawn.needs.mood.thoughts.memories.TryGainMemoryFast(VariousDefOf.HateTookContraceptivePill); + if (pawn.IsProPregnancy(out _)) pawn.needs.mood.thoughts.memories.TryGainMemoryFast(VariousDefOf.HateTookContraceptivePill); else pawn.needs.mood.thoughts.memories.TryGainMemoryFast(VariousDefOf.TookContraceptivePill); } } diff --git a/1.4/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Menstruation.cs b/1.4/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Menstruation.cs index c32ee83..f726878 100644 --- a/1.4/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Menstruation.cs +++ b/1.4/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Menstruation.cs @@ -1796,52 +1796,48 @@ namespace RJW_Menstruation { if (!xxx.is_human(Pawn) || !xxx.is_human(cummer)) return; - if ((cummer.HasQuirk(QuirkUtility.Quirks.Teratophile) != (Pawn.GetStatValue(StatDefOf.PawnBeauty) >= 0)) || - cummer.IsProPregnancy()) + MemoryThoughtHandler cummerMemories = cummer.needs.mood.thoughts.memories; + MemoryThoughtHandler pawnMemories = Pawn.needs.mood.thoughts.memories; + + if (cummer.IsProPregnancy(out Precept preceptm) || (cummer.HasQuirk(QuirkUtility.Quirks.Teratophile) != (Pawn.GetStatValue(StatDefOf.PawnBeauty) >= 0))) { - if (cummer.relations.OpinionOf(Pawn) <= -25) - { - cummer.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.HaterCameInsideM, Pawn); - } + if (cummer.relations.OpinionOf(Pawn) <= -5) + cummerMemories.TryGainMemory(VariousDefOf.HaterCameInsideM, Pawn); + else if (preceptm != null) + cummerMemories.TryGainMemory(VariousDefOf.CameInsideMIdeo, Pawn, preceptm); else - { - cummer.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.CameInsideM, Pawn); - } + cummerMemories.TryGainMemory(VariousDefOf.CameInsideM, Pawn); } if (IsDangerDay) { - if (Pawn.IsProPregnancy()) + if (Pawn.IsProPregnancy(out Precept preceptf)) { - Pawn.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.CameInsideFFetish, cummer); - } - else if (Pawn.relations.OpinionOf(cummer) <= -5) - { - Pawn.needs.mood.thoughts.memories.RemoveMemoriesOfDefWhereOtherPawnIs(VariousDefOf.CameInsideF, cummer); - Pawn.needs.mood.thoughts.memories.RemoveMemoriesOfDefWhereOtherPawnIs(VariousDefOf.HaterCameInsideFEstrus, cummer); - Pawn.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.HaterCameInsideF, cummer); - } - else if (Pawn.IsInEstrus() && Pawn.relations.OpinionOf(cummer) < RJWHookupSettings.MinimumRelationshipToHookup) - { - Pawn.needs.mood.thoughts.memories.RemoveMemoriesOfDefWhereOtherPawnIs(VariousDefOf.CameInsideF, cummer); - Pawn.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.HaterCameInsideFEstrus, cummer); + if (preceptf != null) + { + if (Pawn.relations.OpinionOf(cummer) <= -5) + pawnMemories.TryGainMemory(VariousDefOf.HaterCameInsideFIdeo, cummer, preceptf); + else + pawnMemories.TryGainMemory(VariousDefOf.CameInsideFIdeo, cummer, preceptf); + } + else pawnMemories.TryGainMemory(VariousDefOf.CameInsideFFetish, cummer); } + else if (Pawn.relations.OpinionOf(cummer) <= -5) + pawnMemories.TryGainMemory(VariousDefOf.HaterCameInsideF, cummer); + else if (Pawn.IsInEstrus() && Pawn.relations.OpinionOf(cummer) < RJWHookupSettings.MinimumRelationshipToHookup) + pawnMemories.TryGainMemory(VariousDefOf.HaterCameInsideFEstrus, cummer); else if (!Pawn.relations.DirectRelationExists(PawnRelationDefOf.Spouse, cummer) && !Pawn.relations.DirectRelationExists(PawnRelationDefOf.Fiance, cummer)) { - if (Pawn.health.capacities.GetLevel(xxx.reproduction) < 0.50f) Pawn.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.CameInsideFLowFert, cummer); - else Pawn.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.CameInsideF, cummer); + if (Pawn.health.capacities.GetLevel(xxx.reproduction) < 0.50f) pawnMemories.TryGainMemory(VariousDefOf.CameInsideFLowFert, cummer); + else pawnMemories.TryGainMemory(VariousDefOf.CameInsideF, cummer); } } else { - if (Pawn.IsProPregnancy()) - { - Pawn.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.CameInsideFFetishSafe, cummer); - } + if (Pawn.IsProPregnancy(out Precept _)) + pawnMemories.TryGainMemory(VariousDefOf.CameInsideFFetishSafe, cummer); else if (Pawn.relations.OpinionOf(cummer) <= -5) - { - Pawn.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.HaterCameInsideFSafe, cummer); - } + pawnMemories.TryGainMemory(VariousDefOf.HaterCameInsideFSafe, cummer); } } diff --git a/1.4/source/RJW_Menstruation/RJW_Menstruation/HediffComps/MenstruationUtility.cs b/1.4/source/RJW_Menstruation/RJW_Menstruation/HediffComps/MenstruationUtility.cs index c3cd7e4..f1c2e55 100644 --- a/1.4/source/RJW_Menstruation/RJW_Menstruation/HediffComps/MenstruationUtility.cs +++ b/1.4/source/RJW_Menstruation/RJW_Menstruation/HediffComps/MenstruationUtility.cs @@ -407,20 +407,21 @@ namespace RJW_Menstruation return false; } - public static bool IsProPregnancy(this Pawn pawn) + public static bool IsProPregnancy(this Pawn pawn, out Precept precept) { - if (pawn.HasQuirk(QuirkUtility.Quirks.Breeder) || - pawn.HasQuirk(QuirkUtility.Quirks.ImpregnationFetish)) - return true; + precept = null; Ideo ideo = pawn.Ideo; - if (ideo == null || VariousDefOf.Pregnancy_Elevated == null) return false; - if (ideo.HasPrecept(VariousDefOf.Pregnancy_Elevated) || - ideo.HasPrecept(VariousDefOf.Pregnancy_Holy) || - ideo.HasPrecept(VariousDefOf.Pregnancy_Required)) - return true; + if (ideo != null) + { + precept = ideo.GetPrecept(VariousDefOf.Pregnancy_Required) ?? + ideo.GetPrecept(VariousDefOf.Pregnancy_Holy) ?? + ideo.GetPrecept(VariousDefOf.Pregnancy_Elevated); + } + if (precept != null) return true; - return false; + else return pawn.HasQuirk(QuirkUtility.Quirks.Breeder) || + pawn.HasQuirk(QuirkUtility.Quirks.ImpregnationFetish); } public static float DamagePants(this Pawn pawn, float fluidAmount) diff --git a/1.4/source/RJW_Menstruation/RJW_Menstruation/Hediff_MultiplePregnancy.cs b/1.4/source/RJW_Menstruation/RJW_Menstruation/Hediff_MultiplePregnancy.cs index 0b5d0c5..2cc6646 100644 --- a/1.4/source/RJW_Menstruation/RJW_Menstruation/Hediff_MultiplePregnancy.cs +++ b/1.4/source/RJW_Menstruation/RJW_Menstruation/Hediff_MultiplePregnancy.cs @@ -27,9 +27,10 @@ namespace RJW_Menstruation (pawn.relations?.DirectRelations?.Find(x => x.def.Equals(PawnRelationDefOf.Spouse) || x.def.Equals(PawnRelationDefOf.Fiance))) != null) return; - if (pawn.IsProPregnancy() || pawn.relations?.DirectRelations?.Find(x => x.def.Equals(PawnRelationDefOf.Lover)) != null) + if (pawn.IsProPregnancy(out Precept precept) || pawn.relations?.DirectRelations?.Find(x => x.def.Equals(PawnRelationDefOf.Lover)) != null) { - pawn.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.UnwantedPregnancyMild); + if (precept != null) + pawn.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.UnwantedPregnancyMild); } else { diff --git a/1.4/source/RJW_Menstruation/RJW_Menstruation/VariousDefOf.cs b/1.4/source/RJW_Menstruation/RJW_Menstruation/VariousDefOf.cs index 6c5e143..294f990 100644 --- a/1.4/source/RJW_Menstruation/RJW_Menstruation/VariousDefOf.cs +++ b/1.4/source/RJW_Menstruation/RJW_Menstruation/VariousDefOf.cs @@ -172,5 +172,11 @@ namespace RJW_Menstruation public static readonly PreceptDef Pregnancy_Elevated = DefDatabase.GetNamedSilentFail("Pregnancy_Elevated"); public static readonly PreceptDef Pregnancy_Holy = DefDatabase.GetNamedSilentFail("Pregnancy_Holy"); public static readonly PreceptDef Pregnancy_Required = DefDatabase.GetNamedSilentFail("Pregnancy_Required"); + // Related thoughts + public static readonly ThoughtDef CameInsideMIdeo = DefDatabase.GetNamed("CameInsideMIdeo"); + public static readonly ThoughtDef CameInsideFIdeo = DefDatabase.GetNamed("CameInsideFIdeo"); + public static readonly ThoughtDef HaterCameInsideFIdeo = DefDatabase.GetNamed("HaterCameInsideFIdeo"); + public static readonly ThoughtDef HateTookContraceptivePillIdeo = DefDatabase.GetNamed("HateTookContraceptivePillIdeo"); } + } diff --git a/changelogs.txt b/changelogs.txt index 97ae1c8..4da72dc 100644 --- a/changelogs.txt +++ b/changelogs.txt @@ -1,3 +1,6 @@ +Version 1.0.9.1 + - Add new ideology-related thoughts with the sexperience-ideology mod + Version 1.0.9.0 - Fix errors when opening the womb dialog of some low fertility pawns. - Updated Traditional Chinese translation by Hydrogen.