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>
</li>
</stages>
<replaceThoughts>
<li>CameInsideMIdeo</li>
<li>CameInsideM</li>
</replaceThoughts>
</ThoughtDef>
<ThoughtDef>
@ -63,6 +67,9 @@
<baseOpinionOffset>5</baseOpinionOffset>
</li>
</stages>
<replaceThoughts>
<li>CameInsideFIdeo</li>
</replaceThoughts>
</ThoughtDef>
<ThoughtDef>
@ -80,6 +87,16 @@
<baseOpinionOffset>-10</baseOpinionOffset>
</li>
</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>
@ -93,10 +110,19 @@
<li>
<label>{0} came inside</label>
<description>What was I thinking, letting him do that?</description>
<baseMoodEffect>-2</baseMoodEffect>
<baseMoodEffect>-3</baseMoodEffect>
<baseOpinionOffset>-5</baseOpinionOffset>
</li>
</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>
@ -113,6 +139,12 @@
<baseMoodEffect>-1</baseMoodEffect>
</li>
</stages>
<replaceThoughts>
<li>CameInsideFFetishSafe</li>
<li>HaterCameInsideFIdeo</li>
<li>CameInsideFFetish</li>
<li>CameInsideFIdeo</li>
</replaceThoughts>
</ThoughtDef>
<ThoughtDef>
@ -130,6 +162,14 @@
<baseOpinionOffset>-2</baseOpinionOffset>
</li>
</stages>
<replaceThoughts>
<li>HaterCameInsideFSafe</li>
<li>CameInsideFLowFert</li>
<li>CameInsideFFetishSafe</li>
<li>HaterCameInsideFIdeo</li>
<li>CameInsideFFetish</li>
<li>CameInsideFIdeo</li>
</replaceThoughts>
</ThoughtDef>
<ThoughtDef>
@ -147,6 +187,11 @@
<baseOpinionOffset>1</baseOpinionOffset>
</li>
</stages>
<replaceThoughts>
<li>HaterCameInsideFIdeo</li>
<li>CameInsideFFetish</li>
<li>CameInsideFIdeo</li>
</replaceThoughts>
</ThoughtDef>
<ThoughtDef>
@ -164,6 +209,13 @@
<baseOpinionOffset>-5</baseOpinionOffset>
</li>
</stages>
<replaceThoughts>
<li>CameInsideFLowFert</li>
<li>CameInsideFFetishSafe</li>
<li>HaterCameInsideFIdeo</li>
<li>CameInsideFFetish</li>
<li>CameInsideFIdeo</li>
</replaceThoughts>
</ThoughtDef>
<ThoughtDef>
@ -226,7 +278,7 @@
</stages>
</ThoughtDef>
<ThoughtDef MayRequire="Ludeon.Rimworld.Ideology">
<ThoughtDef>
<defName>EggRestorationReceived</defName>
<thoughtClass>Thought_Memory</thoughtClass>
<durationDays>4</durationDays>
@ -239,6 +291,77 @@
</li>
</stages>
</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>

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -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)

View File

@ -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
{

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_Holy = DefDatabase<PreceptDef>.GetNamedSilentFail("Pregnancy_Holy");
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
- Fix errors when opening the womb dialog of some low fertility pawns.
- Updated Traditional Chinese translation by Hydrogen.