Compare commits

..

7 commits

Author SHA1 Message Date
amevarashi
f5ec31f8e7 1.0.1.1 2022-10-29 16:41:32 +05:00
amevarashi
b6942e3c10 Fixed biotech pregnancy not counting for pregnancy precepts 2022-10-29 16:22:41 +05:00
amevarashi
450c835d2b Fixed Sexual Proselyzing 2022-10-29 16:03:42 +05:00
amevarashi
bf7f6a29fb New precepts should not add thoughts to children 2022-10-29 15:23:25 +05:00
amevarashi
d483924c47 Fixed #1: Submissive gender can't be marked for comfort 2022-10-28 22:49:15 +05:00
amevarashi
36f879e0b6 Changed mod title key 2022-10-28 18:09:46 +05:00
amevarashi
ac5bbc7519 Updated RJW ref 2022-10-27 21:37:59 +05:00
17 changed files with 63 additions and 21 deletions

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Manifest> <Manifest>
<identifier>RJWSexperienceIdeology</identifier> <identifier>RJWSexperienceIdeology</identifier>
<version>1.0.1.0</version> <version>1.0.1.1</version>
<dependencies> <dependencies>
<li>RimJobWorld >= 5.3.0</li> <li>RimJobWorld >= 5.3.0</li>
</dependencies> </dependencies>

View file

@ -1,3 +1,9 @@
## Version 1.0.1.1
* Fixed Ideology overwriting Sexperience's mod settings label
* Fixed submissive gender can't be marked for comfort
* Fixed new precepts adding thoughts to children
* Fixed Sexual Proselyzing precept
* Fixed biotech pregnancy not counting for pregnancy precepts
## Version 1.0.1.0 ## Version 1.0.1.0
* Rimworld 1.4 * Rimworld 1.4
### by Twonki ### by Twonki

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<LanguageData> <LanguageData>
<RS_Mod_Title>RJW 性经验</RS_Mod_Title> <RSI_Mod_Title>RJW 性经验</RSI_Mod_Title>
<MemeStatFactor>迷因</MemeStatFactor> <MemeStatFactor>迷因</MemeStatFactor>

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<LanguageData> <LanguageData>
<RS_Mod_Title>RJW Sexperience Ideology</RS_Mod_Title> <RSI_Mod_Title>RJW Sexperience Ideology</RSI_Mod_Title>
<MemeStatFactor>Meme</MemeStatFactor> <MemeStatFactor>Meme</MemeStatFactor>
<RSVictimCondition>slave, prisoner, submissive gender only</RSVictimCondition> <RSVictimCondition>slave, prisoner, submissive gender only</RSVictimCondition>

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<LanguageData> <LanguageData>
<RS_Mod_Title>RJW Sexperience Ideology</RS_Mod_Title> <RSI_Mod_Title>RJW Sexperience Ideology</RSI_Mod_Title>
<MemeStatFactor>문화 요소</MemeStatFactor> <MemeStatFactor>문화 요소</MemeStatFactor>
<RSVictimCondition>노예, 죄수, 순종적인 성별만 가능합니다.</RSVictimCondition> <RSVictimCondition>노예, 죄수, 순종적인 성별만 가능합니다.</RSVictimCondition>

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<LanguageData> <LanguageData>
<RS_Mod_Title>RJW Sexperience</RS_Mod_Title> <RSI_Mod_Title>RJW Sexperience</RSI_Mod_Title>
<MemeStatFactor>Принцип идеологии</MemeStatFactor> <MemeStatFactor>Принцип идеологии</MemeStatFactor>
<RSVictimCondition>раб, заключенный, подчиненный только по полу</RSVictimCondition> <RSVictimCondition>раб, заключенный, подчиненный только по полу</RSVictimCondition>

View file

@ -80,5 +80,18 @@ namespace RJWSexperience.Ideology
return bestSeenSize; return bestSeenSize;
} }
public static bool IsVisiblyPregnant(Pawn pawn)
{
Hediff pregnancy = PregnancyHelper.GetPregnancy(pawn);
// Currently RJW does not check Biotech pregnancy
if (pregnancy == null && VariousDefOf.PregnantHuman != null)
{
pregnancy = pawn.health.hediffSet.GetFirstHediffOfDef(HediffDefOf.PregnantHuman);
}
return pregnancy?.Visible == true;
}
} }
} }

View file

@ -32,7 +32,7 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<Reference Include="RJW"> <Reference Include="RJW">
<HintPath>..\..\..\rjw\1.3\Assemblies\RJW.dll</HintPath> <HintPath>..\..\..\rjw\1.4\Assemblies\RJW.dll</HintPath>
<Private>False</Private> <Private>False</Private>
</Reference> </Reference>
<Reference Include="System.Core" /> <Reference Include="System.Core" />
@ -94,7 +94,7 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Krafs.Rimworld.Ref"> <PackageReference Include="Krafs.Rimworld.Ref">
<Version>1.4.3524</Version> <Version>1.4.3530</Version>
</PackageReference> </PackageReference>
<PackageReference Include="Lib.Harmony"> <PackageReference Include="Lib.Harmony">
<Version>2.2.2</Version> <Version>2.2.2</Version>

View file

@ -156,10 +156,11 @@ namespace RJWSexperience.Ideology.Patches
} }
} }
[HarmonyPatch(typeof(PawnDesignations_Comfort), nameof(PawnDesignations_Comfort.UpdateCanDesignateComfort))] [HarmonyPatch(typeof(PawnDesignations_Comfort))]
public static class RJW_PatchUpdateCanDesignateComfort public static class RJW_Patch_PawnDesignations_Comfort_Submissive
{ {
public static void Postfix(Pawn pawn, ref bool __result) [HarmonyPostfix, HarmonyPatch(nameof(PawnDesignations_Comfort.UpdateCanDesignateComfort))]
public static void UpdateCanDesignateComfort(Pawn pawn, ref bool __result)
{ {
if (pawn.IsSubmissive()) if (pawn.IsSubmissive())
{ {
@ -167,6 +168,25 @@ namespace RJWSexperience.Ideology.Patches
__result = true; __result = true;
} }
} }
/// <summary>
/// RJW undesignates if it thinks that the pawn can't be a comfort pawn.
/// Why the hell checker method changes the state?
/// </summary>
/// <param name="pawn">Pawn to check</param>
/// <param name="__result">Is pawn currenlty designated as comfort</param>
/// <returns>Run the original method</returns>
[HarmonyPrefix, HarmonyPatch(nameof(PawnDesignations_Comfort.IsDesignatedComfort))]
public static bool IsDesignatedComfort(Pawn pawn, ref bool __result)
{
if (pawn.IsSubmissive() && !pawn.Dead)
{
__result = pawn.GetRJWPawnData().Comfort;
return false;
}
return true;
}
} }
[HarmonyPatch(typeof(Hediff_BasePregnancy), nameof(Hediff_BasePregnancy.PostBirth))] [HarmonyPatch(typeof(Hediff_BasePregnancy), nameof(Hediff_BasePregnancy.PostBirth))]
@ -218,7 +238,7 @@ namespace RJWSexperience.Ideology.Patches
public static void Postfix(SexProps props) public static void Postfix(SexProps props)
{ {
// ShortCuts: Exit Early if Pawn or Partner are null (can happen with Animals or Masturbation) // ShortCuts: Exit Early if Pawn or Partner are null (can happen with Animals or Masturbation)
if (props.pawn != null && props.hasPartner()) if (props.pawn == null || !props.hasPartner())
return; return;
if (props.partner.Ideo?.HasPrecept(VariousDefOf.ProselyzingByOrgasm) == true) if (props.partner.Ideo?.HasPrecept(VariousDefOf.ProselyzingByOrgasm) == true)

View file

@ -22,7 +22,7 @@ namespace RJWSexperience.Ideology.PreceptWorkers
protected override ThoughtState ShouldHaveThought(Pawn p) protected override ThoughtState ShouldHaveThought(Pawn p)
{ {
if (p != null && Genital_Helper.get_AllPartsHediffList(p).Count > 0) if (p?.DevelopmentalStage == DevelopmentalStage.Adult && Genital_Helper.get_AllPartsHediffList(p).Count > 0)
{ {
float bestSize = IdeoUtility.GetGenitalSize(p); float bestSize = IdeoUtility.GetGenitalSize(p);
return ThoughtState.ActiveAtStage(StageFromValue.GetStageIndex(bestSize)); return ThoughtState.ActiveAtStage(StageFromValue.GetStageIndex(bestSize));

View file

@ -23,7 +23,9 @@ namespace RJWSexperience.Ideology.PreceptWorkers
// Important Note: For the Social Worker, we measure otherPawns genitalia // Important Note: For the Social Worker, we measure otherPawns genitalia
protected override ThoughtState ShouldHaveThought(Pawn p, Pawn otherPawn) protected override ThoughtState ShouldHaveThought(Pawn p, Pawn otherPawn)
{ {
if (otherPawn != null && Genital_Helper.get_AllPartsHediffList(otherPawn).Count > 0) if (otherPawn?.DevelopmentalStage == DevelopmentalStage.Adult &&
p?.DevelopmentalStage == DevelopmentalStage.Adult &&
Genital_Helper.get_AllPartsHediffList(otherPawn).Count > 0)
{ {
float bestSize = IdeoUtility.GetGenitalSize(otherPawn); float bestSize = IdeoUtility.GetGenitalSize(otherPawn);
return ThoughtState.ActiveAtStage(StageFromValue.GetStageIndex(bestSize)); return ThoughtState.ActiveAtStage(StageFromValue.GetStageIndex(bestSize));

View file

@ -1,5 +1,4 @@
using RimWorld; using RimWorld;
using rjw;
using Verse; using Verse;
namespace RJWSexperience.Ideology.PreceptWorkers namespace RJWSexperience.Ideology.PreceptWorkers
@ -15,7 +14,7 @@ namespace RJWSexperience.Ideology.PreceptWorkers
/// <returns></returns> /// <returns></returns>
protected override ThoughtState ShouldHaveThought(Pawn p) protected override ThoughtState ShouldHaveThought(Pawn p)
{ {
return PregnancyHelper.GetPregnancy(p)?.Visible != true; return p?.DevelopmentalStage == DevelopmentalStage.Adult && !IdeoUtility.IsVisiblyPregnant(p);
} }
} }
} }

View file

@ -1,5 +1,4 @@
using RimWorld; using RimWorld;
using rjw;
using Verse; using Verse;
namespace RJWSexperience.Ideology.PreceptWorkers namespace RJWSexperience.Ideology.PreceptWorkers
@ -16,7 +15,9 @@ namespace RJWSexperience.Ideology.PreceptWorkers
/// <returns></returns> /// <returns></returns>
protected override ThoughtState ShouldHaveThought(Pawn p, Pawn otherPawn) protected override ThoughtState ShouldHaveThought(Pawn p, Pawn otherPawn)
{ {
return PregnancyHelper.GetPregnancy(otherPawn)?.Visible != true; return otherPawn?.DevelopmentalStage == DevelopmentalStage.Adult &&
p?.DevelopmentalStage == DevelopmentalStage.Adult &&
!IdeoUtility.IsVisiblyPregnant(otherPawn);
} }
} }
} }

View file

@ -1,5 +1,4 @@
using RimWorld; using RimWorld;
using rjw;
using Verse; using Verse;
namespace RJWSexperience.Ideology.PreceptWorkers namespace RJWSexperience.Ideology.PreceptWorkers
@ -15,7 +14,7 @@ namespace RJWSexperience.Ideology.PreceptWorkers
/// <returns></returns> /// <returns></returns>
protected override ThoughtState ShouldHaveThought(Pawn p) protected override ThoughtState ShouldHaveThought(Pawn p)
{ {
return PregnancyHelper.GetPregnancy(p)?.Visible == true; return p?.DevelopmentalStage == DevelopmentalStage.Adult && IdeoUtility.IsVisiblyPregnant(p);
} }
} }
} }

View file

@ -1,5 +1,4 @@
using RimWorld; using RimWorld;
using rjw;
using Verse; using Verse;
namespace RJWSexperience.Ideology.PreceptWorkers namespace RJWSexperience.Ideology.PreceptWorkers
@ -16,7 +15,9 @@ namespace RJWSexperience.Ideology.PreceptWorkers
/// <returns></returns> /// <returns></returns>
protected override ThoughtState ShouldHaveThought(Pawn p, Pawn otherPawn) protected override ThoughtState ShouldHaveThought(Pawn p, Pawn otherPawn)
{ {
return PregnancyHelper.GetPregnancy(otherPawn)?.Visible == true; return otherPawn?.DevelopmentalStage == DevelopmentalStage.Adult &&
p?.DevelopmentalStage == DevelopmentalStage.Adult &&
IdeoUtility.IsVisiblyPregnant(otherPawn);
} }
} }
} }

View file

@ -22,5 +22,6 @@ namespace RJWSexperience.Ideology
[MayRequireIdeology] public static readonly PreceptDef Submissive_Male; [MayRequireIdeology] public static readonly PreceptDef Submissive_Male;
[MayRequireIdeology] public static readonly PreceptDef Submissive_Female; [MayRequireIdeology] public static readonly PreceptDef Submissive_Female;
[MayRequireIdeology] public static readonly PreceptDef ProselyzingByOrgasm; [MayRequireIdeology] public static readonly PreceptDef ProselyzingByOrgasm;
[MayRequireBiotech] public static readonly HediffDef PregnantHuman;
} }
} }