Add new ideo-related thoughts

This commit is contained in:
lutepickle 2023-05-04 17:52:42 -07:00
parent 2601f88a2d
commit b2e849eae1
8 changed files with 178 additions and 48 deletions

Binary file not shown.

View File

@ -30,6 +30,10 @@
<baseOpinionOffset>1</baseOpinionOffset> <baseOpinionOffset>1</baseOpinionOffset>
</li> </li>
</stages> </stages>
<replaceThoughts>
<li>CameInsideMIdeo</li>
<li>CameInsideM</li>
</replaceThoughts>
</ThoughtDef> </ThoughtDef>
<ThoughtDef> <ThoughtDef>
@ -63,6 +67,9 @@
<baseOpinionOffset>5</baseOpinionOffset> <baseOpinionOffset>5</baseOpinionOffset>
</li> </li>
</stages> </stages>
<replaceThoughts>
<li>CameInsideFIdeo</li>
</replaceThoughts>
</ThoughtDef> </ThoughtDef>
<ThoughtDef> <ThoughtDef>
@ -80,6 +87,16 @@
<baseOpinionOffset>-10</baseOpinionOffset> <baseOpinionOffset>-10</baseOpinionOffset>
</li> </li>
</stages> </stages>
<replaceThoughts>
<li>HaterCameInsideFEstrus</li>
<li>CameInsideF</li>
<li>HaterCameInsideFSafe</li>
<li>CameInsideFLowFert</li>
<li>CameInsideFFetishSafe</li>
<li>HaterCameInsideFIdeo</li>
<li>CameInsideFFetish</li>
<li>CameInsideFIdeo</li>
</replaceThoughts>
</ThoughtDef> </ThoughtDef>
<ThoughtDef> <ThoughtDef>
@ -93,10 +110,19 @@
<li> <li>
<label>{0} came inside</label> <label>{0} came inside</label>
<description>What was I thinking, letting him do that?</description> <description>What was I thinking, letting him do that?</description>
<baseMoodEffect>-2</baseMoodEffect> <baseMoodEffect>-3</baseMoodEffect>
<baseOpinionOffset>-5</baseOpinionOffset> <baseOpinionOffset>-5</baseOpinionOffset>
</li> </li>
</stages> </stages>
<replaceThoughts>
<li>CameInsideF</li>
<li>HaterCameInsideFSafe</li>
<li>CameInsideFLowFert</li>
<li>CameInsideFFetishSafe</li>
<li>HaterCameInsideFIdeo</li>
<li>CameInsideFFetish</li>
<li>CameInsideFIdeo</li>
</replaceThoughts>
</ThoughtDef> </ThoughtDef>
<ThoughtDef> <ThoughtDef>
@ -113,6 +139,12 @@
<baseMoodEffect>-1</baseMoodEffect> <baseMoodEffect>-1</baseMoodEffect>
</li> </li>
</stages> </stages>
<replaceThoughts>
<li>CameInsideFFetishSafe</li>
<li>HaterCameInsideFIdeo</li>
<li>CameInsideFFetish</li>
<li>CameInsideFIdeo</li>
</replaceThoughts>
</ThoughtDef> </ThoughtDef>
<ThoughtDef> <ThoughtDef>
@ -130,6 +162,14 @@
<baseOpinionOffset>-2</baseOpinionOffset> <baseOpinionOffset>-2</baseOpinionOffset>
</li> </li>
</stages> </stages>
<replaceThoughts>
<li>HaterCameInsideFSafe</li>
<li>CameInsideFLowFert</li>
<li>CameInsideFFetishSafe</li>
<li>HaterCameInsideFIdeo</li>
<li>CameInsideFFetish</li>
<li>CameInsideFIdeo</li>
</replaceThoughts>
</ThoughtDef> </ThoughtDef>
<ThoughtDef> <ThoughtDef>
@ -147,6 +187,11 @@
<baseOpinionOffset>1</baseOpinionOffset> <baseOpinionOffset>1</baseOpinionOffset>
</li> </li>
</stages> </stages>
<replaceThoughts>
<li>HaterCameInsideFIdeo</li>
<li>CameInsideFFetish</li>
<li>CameInsideFIdeo</li>
</replaceThoughts>
</ThoughtDef> </ThoughtDef>
<ThoughtDef> <ThoughtDef>
@ -164,6 +209,13 @@
<baseOpinionOffset>-5</baseOpinionOffset> <baseOpinionOffset>-5</baseOpinionOffset>
</li> </li>
</stages> </stages>
<replaceThoughts>
<li>CameInsideFLowFert</li>
<li>CameInsideFFetishSafe</li>
<li>HaterCameInsideFIdeo</li>
<li>CameInsideFFetish</li>
<li>CameInsideFIdeo</li>
</replaceThoughts>
</ThoughtDef> </ThoughtDef>
<ThoughtDef> <ThoughtDef>
@ -226,7 +278,7 @@
</stages> </stages>
</ThoughtDef> </ThoughtDef>
<ThoughtDef MayRequire="Ludeon.Rimworld.Ideology"> <ThoughtDef>
<defName>EggRestorationReceived</defName> <defName>EggRestorationReceived</defName>
<thoughtClass>Thought_Memory</thoughtClass> <thoughtClass>Thought_Memory</thoughtClass>
<durationDays>4</durationDays> <durationDays>4</durationDays>
@ -239,6 +291,77 @@
</li> </li>
</stages> </stages>
</ThoughtDef> </ThoughtDef>
<ThoughtDef>
<defName>CameInsideMIdeo</defName>
<thoughtClass>Thought_MemorySocial</thoughtClass>
<durationDays>1.0</durationDays>
<stackLimit>5</stackLimit>
<stackedEffectMultiplier>0.4</stackedEffectMultiplier>
<stages>
<li>
<label>came inside of {0}</label>
<description>It is my duty to make her pregnant.</description>
<baseMoodEffect>3</baseMoodEffect>
<baseOpinionOffset>2</baseOpinionOffset>
</li>
</stages>
<replaceThoughts>
<li>CameInsideM</li>
</replaceThoughts>
</ThoughtDef>
<ThoughtDef>
<defName>CameInsideFIdeo</defName>
<thoughtClass>Thought_MemorySocial</thoughtClass>
<durationDays>3.0</durationDays>
<stackLimit>5</stackLimit>
<stackedEffectMultiplier>0.1</stackedEffectMultiplier>
<stackLimitForSameOtherPawn>1</stackLimitForSameOtherPawn>
<stages>
<li>
<label>{0} came inside</label>
<description>I hope this makes me pregnant like should be.</description>
<baseMoodEffect>15</baseMoodEffect>
<baseOpinionOffset>10</baseOpinionOffset>
</li>
</stages>
</ThoughtDef>
<ThoughtDef>
<defName>HaterCameInsideFIdeo</defName>
<thoughtClass>Thought_MemorySocial</thoughtClass>
<durationDays>3.0</durationDays>
<stackLimit>5</stackLimit>
<stackedEffectMultiplier>0.1</stackedEffectMultiplier>
<stackLimitForSameOtherPawn>1</stackLimitForSameOtherPawn>
<stages>
<li>
<label>{0} came inside</label>
<description>I know I should become pregnant, but does it have to be his?</description>
<baseMoodEffect>5</baseMoodEffect>
<baseOpinionOffset>2</baseOpinionOffset>
</li>
</stages>
<replaceThoughts>
<li>CameInsideFFetish</li>
<li>CameInsideFIdeo</li>
</replaceThoughts>
</ThoughtDef>
<ThoughtDef>
<defName>HateTookContraceptivePillIdeo</defName>
<thoughtClass>Thought_Memory</thoughtClass>
<durationDays>7.0</durationDays>
<stackLimit>5</stackLimit>
<stackedEffectMultiplier>0.1</stackedEffectMultiplier>
<stages>
<li>
<label>took contraceptive pill</label>
<description>My beliefs demand I become pregnant.</description>
<baseMoodEffect>-5</baseMoodEffect>
</li>
</stages>
</ThoughtDef>
</Defs> </Defs>

View File

@ -89,7 +89,7 @@ namespace RJW_Menstruation
else m.moodPowerFactor = 0.3f; 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); else pawn.needs.mood.thoughts.memories.TryGainMemoryFast(VariousDefOf.TookContraceptivePill);
} }
} }

View File

@ -1796,52 +1796,48 @@ namespace RJW_Menstruation
{ {
if (!xxx.is_human(Pawn) || !xxx.is_human(cummer)) return; if (!xxx.is_human(Pawn) || !xxx.is_human(cummer)) return;
if ((cummer.HasQuirk(QuirkUtility.Quirks.Teratophile) != (Pawn.GetStatValue(StatDefOf.PawnBeauty) >= 0)) || MemoryThoughtHandler cummerMemories = cummer.needs.mood.thoughts.memories;
cummer.IsProPregnancy()) 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) if (cummer.relations.OpinionOf(Pawn) <= -5)
{ cummerMemories.TryGainMemory(VariousDefOf.HaterCameInsideM, Pawn);
cummer.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.HaterCameInsideM, Pawn); else if (preceptm != null)
} cummerMemories.TryGainMemory(VariousDefOf.CameInsideMIdeo, Pawn, preceptm);
else else
{ cummerMemories.TryGainMemory(VariousDefOf.CameInsideM, Pawn);
cummer.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.CameInsideM, Pawn);
}
} }
if (IsDangerDay) if (IsDangerDay)
{ {
if (Pawn.IsProPregnancy()) if (Pawn.IsProPregnancy(out Precept preceptf))
{ {
Pawn.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.CameInsideFFetish, cummer); if (preceptf != null)
} {
else if (Pawn.relations.OpinionOf(cummer) <= -5) if (Pawn.relations.OpinionOf(cummer) <= -5)
{ pawnMemories.TryGainMemory(VariousDefOf.HaterCameInsideFIdeo, cummer, preceptf);
Pawn.needs.mood.thoughts.memories.RemoveMemoriesOfDefWhereOtherPawnIs(VariousDefOf.CameInsideF, cummer); else
Pawn.needs.mood.thoughts.memories.RemoveMemoriesOfDefWhereOtherPawnIs(VariousDefOf.HaterCameInsideFEstrus, cummer); pawnMemories.TryGainMemory(VariousDefOf.CameInsideFIdeo, cummer, preceptf);
Pawn.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.HaterCameInsideF, cummer); }
} else pawnMemories.TryGainMemory(VariousDefOf.CameInsideFFetish, 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);
} }
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)) 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); if (Pawn.health.capacities.GetLevel(xxx.reproduction) < 0.50f) pawnMemories.TryGainMemory(VariousDefOf.CameInsideFLowFert, cummer);
else Pawn.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.CameInsideF, cummer); else pawnMemories.TryGainMemory(VariousDefOf.CameInsideF, cummer);
} }
} }
else else
{ {
if (Pawn.IsProPregnancy()) if (Pawn.IsProPregnancy(out Precept _))
{ pawnMemories.TryGainMemory(VariousDefOf.CameInsideFFetishSafe, cummer);
Pawn.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.CameInsideFFetishSafe, cummer);
}
else if (Pawn.relations.OpinionOf(cummer) <= -5) else if (Pawn.relations.OpinionOf(cummer) <= -5)
{ pawnMemories.TryGainMemory(VariousDefOf.HaterCameInsideFSafe, cummer);
Pawn.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.HaterCameInsideFSafe, cummer);
}
} }
} }

View File

@ -407,20 +407,21 @@ namespace RJW_Menstruation
return false; 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) || precept = null;
pawn.HasQuirk(QuirkUtility.Quirks.ImpregnationFetish))
return true;
Ideo ideo = pawn.Ideo; Ideo ideo = pawn.Ideo;
if (ideo == null || VariousDefOf.Pregnancy_Elevated == null) return false; if (ideo != null)
if (ideo.HasPrecept(VariousDefOf.Pregnancy_Elevated) || {
ideo.HasPrecept(VariousDefOf.Pregnancy_Holy) || precept = ideo.GetPrecept(VariousDefOf.Pregnancy_Required) ??
ideo.HasPrecept(VariousDefOf.Pregnancy_Required)) ideo.GetPrecept(VariousDefOf.Pregnancy_Holy) ??
return true; 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) public static float DamagePants(this Pawn pawn, float fluidAmount)

View File

@ -27,9 +27,10 @@ namespace RJW_Menstruation
(pawn.relations?.DirectRelations?.Find(x => x.def.Equals(PawnRelationDefOf.Spouse) || (pawn.relations?.DirectRelations?.Find(x => x.def.Equals(PawnRelationDefOf.Spouse) ||
x.def.Equals(PawnRelationDefOf.Fiance))) != null) x.def.Equals(PawnRelationDefOf.Fiance))) != null)
return; 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 else
{ {

View File

@ -172,5 +172,11 @@ namespace RJW_Menstruation
public static readonly PreceptDef Pregnancy_Elevated = DefDatabase<PreceptDef>.GetNamedSilentFail("Pregnancy_Elevated"); public static readonly PreceptDef Pregnancy_Elevated = DefDatabase<PreceptDef>.GetNamedSilentFail("Pregnancy_Elevated");
public static readonly PreceptDef Pregnancy_Holy = DefDatabase<PreceptDef>.GetNamedSilentFail("Pregnancy_Holy"); public static readonly PreceptDef Pregnancy_Holy = DefDatabase<PreceptDef>.GetNamedSilentFail("Pregnancy_Holy");
public static readonly PreceptDef Pregnancy_Required = DefDatabase<PreceptDef>.GetNamedSilentFail("Pregnancy_Required"); public static readonly PreceptDef Pregnancy_Required = DefDatabase<PreceptDef>.GetNamedSilentFail("Pregnancy_Required");
// Related thoughts
public static readonly ThoughtDef CameInsideMIdeo = DefDatabase<ThoughtDef>.GetNamed("CameInsideMIdeo");
public static readonly ThoughtDef CameInsideFIdeo = DefDatabase<ThoughtDef>.GetNamed("CameInsideFIdeo");
public static readonly ThoughtDef HaterCameInsideFIdeo = DefDatabase<ThoughtDef>.GetNamed("HaterCameInsideFIdeo");
public static readonly ThoughtDef HateTookContraceptivePillIdeo = DefDatabase<ThoughtDef>.GetNamed("HateTookContraceptivePillIdeo");
} }
} }

View File

@ -1,3 +1,6 @@
Version 1.0.9.1
- Add new ideology-related thoughts with the sexperience-ideology mod
Version 1.0.9.0 Version 1.0.9.0
- Fix errors when opening the womb dialog of some low fertility pawns. - Fix errors when opening the womb dialog of some low fertility pawns.
- Updated Traditional Chinese translation by Hydrogen. - Updated Traditional Chinese translation by Hydrogen.