diff --git a/1.3/Defs/PreceptDefs/Precepts_Pregnancy.xml b/1.3/Defs/PreceptDefs/Precepts_Pregnancy.xml
index 7e5b69f..4b1e67a 100644
--- a/1.3/Defs/PreceptDefs/Precepts_Pregnancy.xml
+++ b/1.3/Defs/PreceptDefs/Precepts_Pregnancy.xml
@@ -86,7 +86,7 @@
Low
50
horrible
- Being Pregnant is unclean. Take care and stay pure.
+ Being Pregnant is unclean. Take care and stay pure.
Pregnancy_Horrible_Pregnant
@@ -94,6 +94,7 @@
Pregnancy_Horrible_Pregnant_Social
+
@@ -101,7 +102,7 @@
Pregnancy_Respected_Pregnant
- RJWSexperience.Ideology.PreceptWorkers.ThoughtWorker_Precept_Pregnant
+ RJWSexperience.Ideology.Ideology.Precept_Workers.ThoughtWorker_Precept_Pregnant
Thought_Situational
@@ -114,7 +115,7 @@
Pregnancy_Elevated_Pregnant
- RJWSexperience.Ideology.PreceptWorkers.ThoughtWorker_Precept_Pregnant
+ RJWSexperience.Ideology.Ideology.Precept_Workers.ThoughtWorker_Precept_Pregnant
Thought_Situational
@@ -127,7 +128,7 @@
Pregnancy_Respected_Pregnant_Social
- RJWSexperience.Ideology.PreceptWorkers.ThoughtWorker_Precept_Pregnant_Social
+ RJWSexperience.Ideology.Ideology.Precept_Workers.ThoughtWorker_Precept_Pregnant_Social
Thought_SituationalSocial
@@ -139,7 +140,7 @@
Pregnancy_Elevated_Pregnant_Social
- RJWSexperience.Ideology.PreceptWorkers.ThoughtWorker_Precept_Pregnant_Social
+ RJWSexperience.Ideology.Ideology.Precept_Workers.ThoughtWorker_Precept_Pregnant_Social
Thought_SituationalSocial
@@ -151,7 +152,7 @@
Pregnancy_Horrible_Pregnant_Social
- RJWSexperience.Ideology.PreceptWorkers.ThoughtWorker_Precept_Pregnant_Social
+ RJWSexperience.Ideology.Ideology.Precept_Workers.ThoughtWorker_Precept_Pregnant_Social
Thought_SituationalSocial
@@ -163,7 +164,7 @@
Pregnancy_Horrible_Pregnant
- RJWSexperience.Ideology.PreceptWorkers.ThoughtWorker_Precept_Pregnant
+ RJWSexperience.Ideology.Ideology.Precept_Workers.ThoughtWorker_Precept_Pregnant
Thought_Situational
@@ -177,10 +178,9 @@
Pregnancy_Horrible_NonPregnant
- RJWSexperience.Ideology.PreceptWorkers.ThoughtWorker_Precept_NonPregnant
+ RJWSexperience.Ideology.Ideology.Precept_Workers.ThoughtWorker_Precept_NonPregnant_Social
Thought_Situational
true
- Female
not pregnant
@@ -192,9 +192,8 @@
Pregnancy_Horrible_NonPregnant_Social
- RJWSexperience.Ideology.PreceptWorkers.ThoughtWorker_Precept_NonPregnant_Social
+ RJWSexperience.Ideology.Ideology.Precept_Workers.ThoughtWorker_Precept_NonPregnant_Social
Thought_SituationalSocial
- Female
unfertilized
@@ -203,4 +202,4 @@
-
\ No newline at end of file
+
diff --git a/1.3/Defs/PreceptDefs/Precepts_Sex.xml b/1.3/Defs/PreceptDefs/Precepts_Sex.xml
index 8cf05e4..ea37742 100644
--- a/1.3/Defs/PreceptDefs/Precepts_Sex.xml
+++ b/1.3/Defs/PreceptDefs/Precepts_Sex.xml
@@ -288,7 +288,7 @@
Sex_Promiscuous
1
1
- RJWSexperience.Ideology.Thought_IncreaseRecord
+ RJWSexperience.Thought_IncreaseRecord
promiscuous sex
@@ -297,7 +297,7 @@
-
+
Lust
3.0
diff --git a/1.3/Defs/PreceptDefs/Precepts_SizeMatters.xml b/1.3/Defs/PreceptDefs/Precepts_SizeMatters.xml
index c060ec4..b9bc867 100644
--- a/1.3/Defs/PreceptDefs/Precepts_SizeMatters.xml
+++ b/1.3/Defs/PreceptDefs/Precepts_SizeMatters.xml
@@ -63,7 +63,7 @@
GenitalSize_Approved
Thought_Situational
- RJWSexperience.Ideology.PreceptWorkers.ThoughtWorker_Precept_GenitalSize
+ RJWSexperience.Ideology.ThoughtWorker_Precept_GenitalSize_Approved
Despised Genitalsize
@@ -91,24 +91,11 @@
+10
-
-
-
-
- 0
- 0.2
- 0.4
- 0.6
- 0.8
-
-
-
GenitalSize_Disapproved
- RJWSexperience.Ideology.PreceptWorkers.ThoughtWorker_Precept_GenitalSize
+ RJWSexperience.Ideology.ThoughtWorker_Precept_GenitalSize_Disapproved
Thought_Situational
@@ -137,26 +124,13 @@
-10
-
-
-
-
- 0
- 0.2
- 0.4
- 0.6
- 0.8
-
-
-
GenitalSize_Approved_Social
- RJWSexperience.Ideology.PreceptWorkers.ThoughtWorker_Precept_GenitalSize_Social
+ RJWSexperience.Ideology.ThoughtWorker_Precept_GenitalSize_Approved_Social
Thought_SituationalSocial
@@ -172,48 +146,27 @@
+5
-
-
-
-
- 0
- 0.4
- 0.6
-
-
-
+
GenitalSize_Disapproved_Social
- RJWSexperience.Ideology.PreceptWorkers.ThoughtWorker_Precept_GenitalSize_Social
+ RJWSexperience.Ideology.ThoughtWorker_Precept_GenitalSize_Disapproved_Social
Thought_SituationalSocial
- Favorable Genitals
- +5
+ Unwanted Genitals
+ -5
Normal Genitals
0
- Unwanted Genitals
- -5
+ Favorable Genitals
+ +5
-
-
-
-
- 0
- 0.4
- 0.6
-
-
-
\ No newline at end of file
diff --git a/1.3/Defs/PreceptDefs/Precepts_Submissive.xml b/1.3/Defs/PreceptDefs/Precepts_Submissive.xml
index e69c135..a7c8bbf 100644
--- a/1.3/Defs/PreceptDefs/Precepts_Submissive.xml
+++ b/1.3/Defs/PreceptDefs/Precepts_Submissive.xml
@@ -194,6 +194,9 @@
15
100
3
+
+ Masochist
+
not obedient
diff --git a/1.3/Defs/PreceptDefs/Precepts_Virginity.xml b/1.3/Defs/PreceptDefs/Precepts_Virginity.xml
index a7a231a..50baa70 100644
--- a/1.3/Defs/PreceptDefs/Precepts_Virginity.xml
+++ b/1.3/Defs/PreceptDefs/Precepts_Virginity.xml
@@ -270,7 +270,7 @@
Virgin_Precious_Taken
- RJWSexperience.Ideology.Thought_Opinionbased
+ RJWSexperience.Thought_Opinionbased
7
1
@@ -296,7 +296,7 @@
-
+
-100
-50
@@ -309,7 +309,7 @@
Virgin_Shameful_Taken
- RJWSexperience.Ideology.Thought_Opinionbased
+ RJWSexperience.Thought_Opinionbased
7
1
@@ -330,7 +330,7 @@
-
+
-100
0
diff --git a/Source/IdeologyAddon/GoodwillSituationWorker_MemeCompatibility.cs b/Source/IdeologyAddon/Ideology/GoodwillSituationWorker_MemeCompatibility.cs
similarity index 100%
rename from Source/IdeologyAddon/GoodwillSituationWorker_MemeCompatibility.cs
rename to Source/IdeologyAddon/Ideology/GoodwillSituationWorker_MemeCompatibility.cs
diff --git a/Source/IdeologyAddon/HistoryEvents/ArgsNamesCustom.cs b/Source/IdeologyAddon/Ideology/HistoryEvents/ArgsNamesCustom.cs
similarity index 100%
rename from Source/IdeologyAddon/HistoryEvents/ArgsNamesCustom.cs
rename to Source/IdeologyAddon/Ideology/HistoryEvents/ArgsNamesCustom.cs
diff --git a/Source/IdeologyAddon/HistoryEvents/DefExtension_EventOverrides.cs b/Source/IdeologyAddon/Ideology/HistoryEvents/DefExtension_EventOverrides.cs
similarity index 100%
rename from Source/IdeologyAddon/HistoryEvents/DefExtension_EventOverrides.cs
rename to Source/IdeologyAddon/Ideology/HistoryEvents/DefExtension_EventOverrides.cs
diff --git a/Source/IdeologyAddon/HistoryEvents/DefExtension_SecondaryEvents.cs b/Source/IdeologyAddon/Ideology/HistoryEvents/DefExtension_SecondaryEvents.cs
similarity index 100%
rename from Source/IdeologyAddon/HistoryEvents/DefExtension_SecondaryEvents.cs
rename to Source/IdeologyAddon/Ideology/HistoryEvents/DefExtension_SecondaryEvents.cs
diff --git a/Source/IdeologyAddon/HistoryEvents/HistoryEventDefExtensionMethods.cs b/Source/IdeologyAddon/Ideology/HistoryEvents/HistoryEventDefExtensionMethods.cs
similarity index 100%
rename from Source/IdeologyAddon/HistoryEvents/HistoryEventDefExtensionMethods.cs
rename to Source/IdeologyAddon/Ideology/HistoryEvents/HistoryEventDefExtensionMethods.cs
diff --git a/Source/IdeologyAddon/HistoryEvents/TwoPawnEventRule.cs b/Source/IdeologyAddon/Ideology/HistoryEvents/TwoPawnEventRule.cs
similarity index 100%
rename from Source/IdeologyAddon/HistoryEvents/TwoPawnEventRule.cs
rename to Source/IdeologyAddon/Ideology/HistoryEvents/TwoPawnEventRule.cs
diff --git a/Source/IdeologyAddon/IdeoUtility.cs b/Source/IdeologyAddon/Ideology/IdeoUtility.cs
similarity index 100%
rename from Source/IdeologyAddon/IdeoUtility.cs
rename to Source/IdeologyAddon/Ideology/IdeoUtility.cs
diff --git a/Source/IdeologyAddon/InteractionDefExtension_HistoryEvents.cs b/Source/IdeologyAddon/Ideology/InteractionDefExtension_HistoryEvents.cs
similarity index 100%
rename from Source/IdeologyAddon/InteractionDefExtension_HistoryEvents.cs
rename to Source/IdeologyAddon/Ideology/InteractionDefExtension_HistoryEvents.cs
diff --git a/Source/IdeologyAddon/Keyed.cs b/Source/IdeologyAddon/Ideology/Keyed.cs
similarity index 93%
rename from Source/IdeologyAddon/Keyed.cs
rename to Source/IdeologyAddon/Ideology/Keyed.cs
index 8a98c01..58c89cf 100644
--- a/Source/IdeologyAddon/Keyed.cs
+++ b/Source/IdeologyAddon/Ideology/Keyed.cs
@@ -1,6 +1,6 @@
using Verse;
-namespace RJWSexperience.Ideology
+namespace RJWSexperience
{
public static class Keyed
{
diff --git a/Source/IdeologyAddon/Patches/RJW_Patch_ChancePerHour.cs b/Source/IdeologyAddon/Ideology/Patches/RJW_Patch_ChancePerHour.cs
similarity index 100%
rename from Source/IdeologyAddon/Patches/RJW_Patch_ChancePerHour.cs
rename to Source/IdeologyAddon/Ideology/Patches/RJW_Patch_ChancePerHour.cs
diff --git a/Source/IdeologyAddon/Patches/RJW_Patch_Ideo.cs b/Source/IdeologyAddon/Ideology/Patches/RJW_Patch_Ideo.cs
similarity index 100%
rename from Source/IdeologyAddon/Patches/RJW_Patch_Ideo.cs
rename to Source/IdeologyAddon/Ideology/Patches/RJW_Patch_Ideo.cs
diff --git a/Source/IdeologyAddon/Patches/Rimworld_Patch.cs b/Source/IdeologyAddon/Ideology/Patches/Rimworld_Patch.cs
similarity index 100%
rename from Source/IdeologyAddon/Patches/Rimworld_Patch.cs
rename to Source/IdeologyAddon/Ideology/Patches/Rimworld_Patch.cs
diff --git a/Source/IdeologyAddon/Patches/Sexperience_Patch.cs b/Source/IdeologyAddon/Ideology/Patches/Sexperience_Patch.cs
similarity index 100%
rename from Source/IdeologyAddon/Patches/Sexperience_Patch.cs
rename to Source/IdeologyAddon/Ideology/Patches/Sexperience_Patch.cs
diff --git a/Source/IdeologyAddon/Ideology/PreceptWorkers/ThoughtWorker_Precept_GenitalSize_Approved.cs b/Source/IdeologyAddon/Ideology/PreceptWorkers/ThoughtWorker_Precept_GenitalSize_Approved.cs
new file mode 100644
index 0000000..6c5f491
--- /dev/null
+++ b/Source/IdeologyAddon/Ideology/PreceptWorkers/ThoughtWorker_Precept_GenitalSize_Approved.cs
@@ -0,0 +1,31 @@
+using RimWorld;
+using rjw;
+using Verse;
+
+namespace RJWSexperience.Ideology
+{
+ public class ThoughtWorker_Precept_GenitalSize_Approved : ThoughtWorker_Precept
+ {
+ protected override ThoughtState ShouldHaveThought(Pawn p)
+ {
+ // We have 5 stages, which map directly to genitalia severity:
+ // Micro(<0.2), Small(>0.2&&<0.4), Normal(>0.4&&<0.6), Big(>0.6&&<0.8), Huge(>0.8)
+ if (p != null && Genital_Helper.get_AllPartsHediffList(p).Count > 0)
+ {
+ float best_size = IdeoUtility.getGenitalSize(p);
+ if (best_size < 0.2f)
+ return ThoughtState.ActiveAtStage(0);
+ else if (best_size < 0.4f)
+ return ThoughtState.ActiveAtStage(1);
+ else if (best_size < 0.6f)
+ return ThoughtState.ActiveAtStage(2);
+ else if (best_size < 0.8f)
+ return ThoughtState.ActiveAtStage(3);
+ else if (best_size > 0.8f)
+ return ThoughtState.ActiveAtStage(4);
+ }
+ // This might can happen if the pawn has no genitalia ... maybe?
+ return ThoughtState.Inactive;
+ }
+ }
+}
diff --git a/Source/IdeologyAddon/Ideology/PreceptWorkers/ThoughtWorker_Precept_GenitalSize_Approved_Social.cs b/Source/IdeologyAddon/Ideology/PreceptWorkers/ThoughtWorker_Precept_GenitalSize_Approved_Social.cs
new file mode 100644
index 0000000..22dadbe
--- /dev/null
+++ b/Source/IdeologyAddon/Ideology/PreceptWorkers/ThoughtWorker_Precept_GenitalSize_Approved_Social.cs
@@ -0,0 +1,29 @@
+using RimWorld;
+using rjw;
+using Verse;
+
+namespace RJWSexperience.Ideology
+{
+ public class ThoughtWorker_Precept_GenitalSize_Approved_Social : ThoughtWorker_Precept_Social
+ {
+
+ // Important Note: For the Social Worker, we measure otherPawns genitalia
+ protected override ThoughtState ShouldHaveThought(Pawn p, Pawn otherPawn)
+ {
+ // We have 3 stages, which map directly to genitalia severity:
+ // Unfavorable(<0.4), Normal(>0.4&&<0.6), Favorable(>0.6)
+ if (otherPawn != null && Genital_Helper.get_AllPartsHediffList(otherPawn).Count > 0)
+ {
+ float best_size = IdeoUtility.getGenitalSize(otherPawn);
+ if (best_size < 0.4f)
+ return ThoughtState.ActiveAtStage(0);
+ else if (best_size < 0.6f)
+ return ThoughtState.ActiveAtStage(1);
+ else if (best_size > 0.6f)
+ return ThoughtState.ActiveAtStage(2);
+ }
+ // This might can happen if the pawn has no genitalia ... maybe?
+ return ThoughtState.Inactive;
+ }
+ }
+}
diff --git a/Source/IdeologyAddon/Ideology/PreceptWorkers/ThoughtWorker_Precept_GenitalSize_Disapproved.cs b/Source/IdeologyAddon/Ideology/PreceptWorkers/ThoughtWorker_Precept_GenitalSize_Disapproved.cs
new file mode 100644
index 0000000..7f7eae2
--- /dev/null
+++ b/Source/IdeologyAddon/Ideology/PreceptWorkers/ThoughtWorker_Precept_GenitalSize_Disapproved.cs
@@ -0,0 +1,32 @@
+using RimWorld;
+using rjw;
+using Verse;
+
+namespace RJWSexperience.Ideology
+{
+ public class ThoughtWorker_Precept_GenitalSize_Disapproved : ThoughtWorker_Precept
+ {
+ protected override ThoughtState ShouldHaveThought(Pawn p)
+ {
+ // We have 5 stages, which map directly to genitalia severity:
+ // Micro(<0.2), Small(>0.2&&<0.4), Normal(>0.4&&<0.6), Big(>0.6&&<0.8), Huge(>0.8)
+ if (p != null && Genital_Helper.get_AllPartsHediffList(p).Count > 0)
+ {
+ float best_size = IdeoUtility.getGenitalSize(p);
+ if (best_size < 0.2f)
+ return ThoughtState.ActiveAtStage(0);
+ else if (best_size < 0.4f)
+ return ThoughtState.ActiveAtStage(1);
+ else if (best_size < 0.6f)
+ return ThoughtState.ActiveAtStage(2);
+ else if (best_size < 0.8f)
+ return ThoughtState.ActiveAtStage(3);
+ else if (best_size > 0.8f)
+ return ThoughtState.ActiveAtStage(4);
+ }
+ // This might can happen if the pawn has no genitalia ... maybe?
+ return ThoughtState.Inactive;
+ }
+
+ }
+}
diff --git a/Source/IdeologyAddon/Ideology/PreceptWorkers/ThoughtWorker_Precept_GenitalSize_Disapproved_Social.cs b/Source/IdeologyAddon/Ideology/PreceptWorkers/ThoughtWorker_Precept_GenitalSize_Disapproved_Social.cs
new file mode 100644
index 0000000..7df72e4
--- /dev/null
+++ b/Source/IdeologyAddon/Ideology/PreceptWorkers/ThoughtWorker_Precept_GenitalSize_Disapproved_Social.cs
@@ -0,0 +1,28 @@
+using RimWorld;
+using rjw;
+using Verse;
+
+namespace RJWSexperience.Ideology
+{
+ public class ThoughtWorker_Precept_GenitalSize_Disapproved_Social : ThoughtWorker_Precept_Social
+ {
+ // Important Note: For the Social Worker, we measure otherPawns genitalia
+ protected override ThoughtState ShouldHaveThought(Pawn p, Pawn otherPawn)
+ {
+ // We have 3 stages, which map directly to genitalia severity:
+ // Unfavorable(<0.4), Normal(>0.4&&<0.6), Favorable(>0.6)
+ if (otherPawn != null && Genital_Helper.get_AllPartsHediffList(otherPawn).Count > 0)
+ {
+ float best_size = IdeoUtility.getGenitalSize(otherPawn);
+ if (best_size < 0.4f)
+ return ThoughtState.ActiveAtStage(0);
+ else if (best_size < 0.6f)
+ return ThoughtState.ActiveAtStage(1);
+ else if (best_size > 0.6f)
+ return ThoughtState.ActiveAtStage(2);
+ }
+ // This might can happen if the pawn has no genitalia ... maybe?
+ return ThoughtState.Inactive;
+ }
+ }
+ }
diff --git a/Source/IdeologyAddon/Ideology/PreceptWorkers/ThoughtWorker_Precept_NonPregnant.cs b/Source/IdeologyAddon/Ideology/PreceptWorkers/ThoughtWorker_Precept_NonPregnant.cs
new file mode 100644
index 0000000..118d2bd
--- /dev/null
+++ b/Source/IdeologyAddon/Ideology/PreceptWorkers/ThoughtWorker_Precept_NonPregnant.cs
@@ -0,0 +1,29 @@
+using RimWorld;
+using Verse;
+using rjw;
+
+namespace RJWSexperience.Ideology.Ideology.Precept_Workers
+{
+ ///
+ /// thought worker for a thought that is active when a certain hediff is present, and who's stage depends on the ether state of the pawn
+ /// Shamelessly taken from: https://github.com/Tachyonite/Pawnmorpher/blob/master/Source/Pawnmorphs/Esoteria/Thoughts/ThoughtWorker_EtherHediff.cs
+ ///
+ public class ThoughtWorker_Precept_NonPregnant : ThoughtWorker_Precept
+ {
+ /// Gets the current thought state of the given pawn.
+ /// The pawn for whom the thoughts are generated.
+ ///
+ protected override ThoughtState ShouldHaveThought(Pawn p)
+ {
+
+ var pregnancy = rjw.PregnancyHelper.GetPregnancy(p);
+
+ if (pregnancy == null)
+ {
+ return ThoughtState.Inactive;
+ }
+
+ return ThoughtState.ActiveAtStage(0);
+ }
+ }
+}
diff --git a/Source/IdeologyAddon/Ideology/PreceptWorkers/ThoughtWorker_Precept_NonPregnant_Social.cs b/Source/IdeologyAddon/Ideology/PreceptWorkers/ThoughtWorker_Precept_NonPregnant_Social.cs
new file mode 100644
index 0000000..68ed70b
--- /dev/null
+++ b/Source/IdeologyAddon/Ideology/PreceptWorkers/ThoughtWorker_Precept_NonPregnant_Social.cs
@@ -0,0 +1,28 @@
+using RimWorld;
+using Verse;
+using rjw;
+
+namespace RJWSexperience.Ideology.Ideology.Precept_Workers
+{
+ ///
+ /// thought worker for a thought that is active when a certain hediff is present, and who's stage depends on the ether state of the pawn
+ /// Shamelessly taken from: https://github.com/Tachyonite/Pawnmorpher/blob/master/Source/Pawnmorphs/Esoteria/Thoughts/ThoughtWorker_EtherHediff.cs
+ ///
+ public class ThoughtWorker_Precept_NonPregnant_Social : ThoughtWorker_Precept
+ {
+ /// Gets the current thought state of the given pawn.
+ /// The pawn for whom the thoughts are generated.
+ ///
+ protected override ThoughtState ShouldHaveThought(Pawn p)
+ {
+
+ var pregnancy = rjw.PregnancyHelper.GetPregnancy(p);
+
+ if (pregnancy != null)
+ {
+ return ThoughtState.Inactive;
+ } else
+ return ThoughtState.ActiveAtStage(0);
+ }
+ }
+}
diff --git a/Source/IdeologyAddon/Ideology/PreceptWorkers/ThoughtWorker_Precept_Pregnant.cs b/Source/IdeologyAddon/Ideology/PreceptWorkers/ThoughtWorker_Precept_Pregnant.cs
new file mode 100644
index 0000000..fab5f90
--- /dev/null
+++ b/Source/IdeologyAddon/Ideology/PreceptWorkers/ThoughtWorker_Precept_Pregnant.cs
@@ -0,0 +1,30 @@
+
+using RimWorld;
+using Verse;
+using rjw;
+
+namespace RJWSexperience.Ideology.Ideology.Precept_Workers
+{
+ ///
+ /// thought worker for a thought that is active when a certain hediff is present, and who's stage depends on the ether state of the pawn
+ /// Shamelessly taken from: https://github.com/Tachyonite/Pawnmorpher/blob/master/Source/Pawnmorphs/Esoteria/Thoughts/ThoughtWorker_EtherHediff.cs
+ ///
+ public class ThoughtWorker_Precept_Pregnant : ThoughtWorker_Precept
+ {
+ /// Gets the current thought state of the given pawn.
+ /// The pawn for whom the thoughts are generated.
+ ///
+ protected override ThoughtState ShouldHaveThought(Pawn p)
+ {
+
+ var pregnancy = rjw.PregnancyHelper.GetPregnancy(p);
+
+ if (pregnancy == null)
+ {
+ return ThoughtState.Inactive;
+ }
+
+ return ThoughtState.ActiveAtStage(0);
+ }
+ }
+}
diff --git a/Source/IdeologyAddon/Ideology/PreceptWorkers/ThoughtWorker_Precept_Pregnant_Social.cs b/Source/IdeologyAddon/Ideology/PreceptWorkers/ThoughtWorker_Precept_Pregnant_Social.cs
new file mode 100644
index 0000000..b1cdaa0
--- /dev/null
+++ b/Source/IdeologyAddon/Ideology/PreceptWorkers/ThoughtWorker_Precept_Pregnant_Social.cs
@@ -0,0 +1,29 @@
+using RimWorld;
+using Verse;
+using rjw;
+
+namespace RJWSexperience.Ideology.Ideology.Precept_Workers
+{
+ ///
+ /// thought worker for a thought that is active when a certain hediff is present, and who's stage depends on the ether state of the pawn
+ /// Shamelessly taken from: https://github.com/Tachyonite/Pawnmorpher/blob/master/Source/Pawnmorphs/Esoteria/Thoughts/ThoughtWorker_EtherHediff.cs
+ ///
+ public class ThoughtWorker_Precept_Pregnant_Social : ThoughtWorker_Precept
+ {
+ /// Gets the current thought state of the given pawn.
+ /// The pawn for whom the thoughts are generated.
+ ///
+ protected override ThoughtState ShouldHaveThought(Pawn p)
+ {
+
+ var pregnancy = rjw.PregnancyHelper.GetPregnancy(p);
+
+ if (pregnancy == null)
+ {
+ return ThoughtState.Inactive;
+ }
+
+ return ThoughtState.ActiveAtStage(0);
+ }
+ }
+}
diff --git a/Source/IdeologyAddon/Precepts/Comp_KnowsMemoryThought_Gendered.cs b/Source/IdeologyAddon/Ideology/Precepts/Comp_KnowsMemoryThought_Gendered.cs
similarity index 100%
rename from Source/IdeologyAddon/Precepts/Comp_KnowsMemoryThought_Gendered.cs
rename to Source/IdeologyAddon/Ideology/Precepts/Comp_KnowsMemoryThought_Gendered.cs
diff --git a/Source/IdeologyAddon/Precepts/Comp_SelfTookMemoryThought_Gendered.cs b/Source/IdeologyAddon/Ideology/Precepts/Comp_SelfTookMemoryThought_Gendered.cs
similarity index 100%
rename from Source/IdeologyAddon/Precepts/Comp_SelfTookMemoryThought_Gendered.cs
rename to Source/IdeologyAddon/Ideology/Precepts/Comp_SelfTookMemoryThought_Gendered.cs
diff --git a/Source/IdeologyAddon/Precepts/DefExtension_ModifyBestialityMtb.cs b/Source/IdeologyAddon/Ideology/Precepts/DefExtension_ModifyBestialityMtb.cs
similarity index 100%
rename from Source/IdeologyAddon/Precepts/DefExtension_ModifyBestialityMtb.cs
rename to Source/IdeologyAddon/Ideology/Precepts/DefExtension_ModifyBestialityMtb.cs
diff --git a/Source/IdeologyAddon/Precepts/DefExtension_ModifyFappinMtb.cs b/Source/IdeologyAddon/Ideology/Precepts/DefExtension_ModifyFappinMtb.cs
similarity index 100%
rename from Source/IdeologyAddon/Precepts/DefExtension_ModifyFappinMtb.cs
rename to Source/IdeologyAddon/Ideology/Precepts/DefExtension_ModifyFappinMtb.cs
diff --git a/Source/IdeologyAddon/Precepts/DefExtension_ModifyMtb.cs b/Source/IdeologyAddon/Ideology/Precepts/DefExtension_ModifyMtb.cs
similarity index 100%
rename from Source/IdeologyAddon/Precepts/DefExtension_ModifyMtb.cs
rename to Source/IdeologyAddon/Ideology/Precepts/DefExtension_ModifyMtb.cs
diff --git a/Source/IdeologyAddon/Precepts/DefExtension_ModifyNecroMtb.cs b/Source/IdeologyAddon/Ideology/Precepts/DefExtension_ModifyNecroMtb.cs
similarity index 100%
rename from Source/IdeologyAddon/Precepts/DefExtension_ModifyNecroMtb.cs
rename to Source/IdeologyAddon/Ideology/Precepts/DefExtension_ModifyNecroMtb.cs
diff --git a/Source/IdeologyAddon/Precepts/DefExtension_ModifyPreference.cs b/Source/IdeologyAddon/Ideology/Precepts/DefExtension_ModifyPreference.cs
similarity index 100%
rename from Source/IdeologyAddon/Precepts/DefExtension_ModifyPreference.cs
rename to Source/IdeologyAddon/Ideology/Precepts/DefExtension_ModifyPreference.cs
diff --git a/Source/IdeologyAddon/Precepts/DefExtension_ModifyRapeCPMtb.cs b/Source/IdeologyAddon/Ideology/Precepts/DefExtension_ModifyRapeCPMtb.cs
similarity index 100%
rename from Source/IdeologyAddon/Precepts/DefExtension_ModifyRapeCPMtb.cs
rename to Source/IdeologyAddon/Ideology/Precepts/DefExtension_ModifyRapeCPMtb.cs
diff --git a/Source/IdeologyAddon/Precepts/DefExtension_MultipleMemesRequired.cs b/Source/IdeologyAddon/Ideology/Precepts/DefExtension_MultipleMemesRequired.cs
similarity index 100%
rename from Source/IdeologyAddon/Precepts/DefExtension_MultipleMemesRequired.cs
rename to Source/IdeologyAddon/Ideology/Precepts/DefExtension_MultipleMemesRequired.cs
diff --git a/Source/IdeologyAddon/RelationFilter.cs b/Source/IdeologyAddon/Ideology/RelationFilter.cs
similarity index 100%
rename from Source/IdeologyAddon/RelationFilter.cs
rename to Source/IdeologyAddon/Ideology/RelationFilter.cs
diff --git a/Source/IdeologyAddon/Rituals/JobGiver_DrugOrgy.cs b/Source/IdeologyAddon/Ideology/Rituals/JobGiver_DrugOrgy.cs
similarity index 100%
rename from Source/IdeologyAddon/Rituals/JobGiver_DrugOrgy.cs
rename to Source/IdeologyAddon/Ideology/Rituals/JobGiver_DrugOrgy.cs
diff --git a/Source/IdeologyAddon/Rituals/JobGiver_GangbangConsensual.cs b/Source/IdeologyAddon/Ideology/Rituals/JobGiver_GangbangConsensual.cs
similarity index 100%
rename from Source/IdeologyAddon/Rituals/JobGiver_GangbangConsensual.cs
rename to Source/IdeologyAddon/Ideology/Rituals/JobGiver_GangbangConsensual.cs
diff --git a/Source/IdeologyAddon/Rituals/JobGiver_GangbangVictim.cs b/Source/IdeologyAddon/Ideology/Rituals/JobGiver_GangbangVictim.cs
similarity index 100%
rename from Source/IdeologyAddon/Rituals/JobGiver_GangbangVictim.cs
rename to Source/IdeologyAddon/Ideology/Rituals/JobGiver_GangbangVictim.cs
diff --git a/Source/IdeologyAddon/Rituals/LordJob_Rituals.cs b/Source/IdeologyAddon/Ideology/Rituals/LordJob_Rituals.cs
similarity index 100%
rename from Source/IdeologyAddon/Rituals/LordJob_Rituals.cs
rename to Source/IdeologyAddon/Ideology/Rituals/LordJob_Rituals.cs
diff --git a/Source/IdeologyAddon/Rituals/RitualBehaviorWorkers.cs b/Source/IdeologyAddon/Ideology/Rituals/RitualBehaviorWorkers.cs
similarity index 100%
rename from Source/IdeologyAddon/Rituals/RitualBehaviorWorkers.cs
rename to Source/IdeologyAddon/Ideology/Rituals/RitualBehaviorWorkers.cs
diff --git a/Source/IdeologyAddon/Rituals/RitualOutcomeComps.cs b/Source/IdeologyAddon/Ideology/Rituals/RitualOutcomeComps.cs
similarity index 100%
rename from Source/IdeologyAddon/Rituals/RitualOutcomeComps.cs
rename to Source/IdeologyAddon/Ideology/Rituals/RitualOutcomeComps.cs
diff --git a/Source/IdeologyAddon/Rituals/RitualRoles.cs b/Source/IdeologyAddon/Ideology/Rituals/RitualRoles.cs
similarity index 100%
rename from Source/IdeologyAddon/Rituals/RitualRoles.cs
rename to Source/IdeologyAddon/Ideology/Rituals/RitualRoles.cs
diff --git a/Source/IdeologyAddon/RsiHistoryEventDefOf.cs b/Source/IdeologyAddon/Ideology/RsiHistoryEventDefOf.cs
similarity index 100%
rename from Source/IdeologyAddon/RsiHistoryEventDefOf.cs
rename to Source/IdeologyAddon/Ideology/RsiHistoryEventDefOf.cs
diff --git a/Source/IdeologyAddon/SinglePawnFilter.cs b/Source/IdeologyAddon/Ideology/SinglePawnFilter.cs
similarity index 100%
rename from Source/IdeologyAddon/SinglePawnFilter.cs
rename to Source/IdeologyAddon/Ideology/SinglePawnFilter.cs
diff --git a/Source/IdeologyAddon/StatParts.cs b/Source/IdeologyAddon/Ideology/StatParts.cs
similarity index 100%
rename from Source/IdeologyAddon/StatParts.cs
rename to Source/IdeologyAddon/Ideology/StatParts.cs
diff --git a/Source/IdeologyAddon/Ideology/Thought_IncreaseRecord.cs b/Source/IdeologyAddon/Ideology/Thought_IncreaseRecord.cs
new file mode 100644
index 0000000..d50eb50
--- /dev/null
+++ b/Source/IdeologyAddon/Ideology/Thought_IncreaseRecord.cs
@@ -0,0 +1,54 @@
+using RimWorld;
+using Verse;
+
+namespace RJWSexperience.Ideology
+{
+ public class Thought_IncreaseRecord : Thought_Recordbased
+ {
+ protected float recordIncrement;
+
+ public override void ExposeData()
+ {
+ base.ExposeData();
+ Scribe_Values.Look(ref recordIncrement, "recordIncrement", recordIncrement, true);
+ }
+
+ public override void ThoughtInterval()
+ {
+ base.ThoughtInterval();
+ if (recordIncrement != 0)
+ {
+ pawn.records.AddTo(RecordDef, recordIncrement);
+ recordIncrement = 0;
+ }
+ }
+
+ public override bool TryMergeWithExistingMemory(out bool showBubble)
+ {
+ ThoughtHandler thoughts = pawn.needs.mood.thoughts;
+ if (thoughts.memories.NumMemoriesInGroup(this) >= def.stackLimit)
+ {
+ Thought_IncreaseRecord thought_Memory = (Thought_IncreaseRecord)thoughts.memories.OldestMemoryInGroup(this);
+ if (thought_Memory != null)
+ {
+ showBubble = (thought_Memory.age > thought_Memory.def.DurationTicks / 2);
+ thought_Memory.Merged();
+ return true;
+ }
+ }
+ showBubble = true;
+ return false;
+ }
+
+ public override void Init()
+ {
+ base.Init();
+ recordIncrement = Def.increment;
+ }
+ protected virtual void Merged()
+ {
+ age = 0;
+ recordIncrement += Def.increment;
+ }
+ }
+}
diff --git a/Source/IdeologyAddon/Ideology/Thought_Opinionbased.cs b/Source/IdeologyAddon/Ideology/Thought_Opinionbased.cs
new file mode 100644
index 0000000..16a83b4
--- /dev/null
+++ b/Source/IdeologyAddon/Ideology/Thought_Opinionbased.cs
@@ -0,0 +1,38 @@
+using RimWorld;
+using System.Collections.Generic;
+using System.Diagnostics.CodeAnalysis;
+
+namespace RJWSexperience.Ideology
+{
+ ///
+ /// ThoughtDef using opinion
+ ///
+ public class ThoughtDef_Opinionbased : ThoughtDef
+ {
+ [SuppressMessage("Minor Code Smell", "S1104:Fields should not have public accessibility", Justification = "Field value loaded from XML")]
+ public List minimumValueforStage = new List();
+ }
+
+ ///
+ /// Thought class using record.
+ ///
+ public class Thought_Opinionbased : Thought_Memory
+ {
+ protected ThoughtDef_Opinionbased Def => (ThoughtDef_Opinionbased)def;
+ protected List MinimumValueforStage => Def.minimumValueforStage;
+
+ public override int CurStageIndex
+ {
+ get
+ {
+ float value = 0f;
+ if (otherPawn != null) value = pawn.relations?.OpinionOf(otherPawn) ?? 0f;
+ for (int i = MinimumValueforStage.Count - 1; i > 0; i--)
+ {
+ if (MinimumValueforStage[i] < value) return i;
+ }
+ return 0;
+ }
+ }
+ }
+}
diff --git a/Source/IdeologyAddon/TwoPawnFilter.cs b/Source/IdeologyAddon/Ideology/TwoPawnFilter.cs
similarity index 100%
rename from Source/IdeologyAddon/TwoPawnFilter.cs
rename to Source/IdeologyAddon/Ideology/TwoPawnFilter.cs
diff --git a/Source/IdeologyAddon/VariousDefOf.cs b/Source/IdeologyAddon/Ideology/VariousDefOf.cs
similarity index 77%
rename from Source/IdeologyAddon/VariousDefOf.cs
rename to Source/IdeologyAddon/Ideology/VariousDefOf.cs
index 8e8456a..4cce63e 100644
--- a/Source/IdeologyAddon/VariousDefOf.cs
+++ b/Source/IdeologyAddon/Ideology/VariousDefOf.cs
@@ -22,6 +22,9 @@ namespace RJWSexperience.Ideology
[MayRequireIdeology] public static readonly PreceptDef Submissive_Male;
[MayRequireIdeology] public static readonly PreceptDef Submissive_Female;
[MayRequireIdeology] public static readonly PreceptDef Proselyzing_By_Orgasm;
- //[MayRequireIdeology] public static readonly PreceptDef Proselyzing_By_Sex;
+ [MayRequireIdeology] public static readonly PreceptDef Proselyzing_By_Sex;
+ [MayRequireIdeology] public static readonly PreceptDef GenitalSize_Approved;
+ [MayRequireIdeology] public static readonly PreceptDef GenitalSize_Disapproved;
+ [MayRequireIdeology] public static readonly PreceptDef GenitalSize_NoRules;
}
}
diff --git a/Source/IdeologyAddon/IdeologyAddon.csproj b/Source/IdeologyAddon/IdeologyAddon.csproj
index 131a6c5..819c938 100644
--- a/Source/IdeologyAddon/IdeologyAddon.csproj
+++ b/Source/IdeologyAddon/IdeologyAddon.csproj
@@ -32,8 +32,7 @@
- ..\..\..\rjw\1.3\Assemblies\RJW.dll
- False
+ ..\..\..\rjw-vegapnk\1.3\Assemblies\RJW.dll
@@ -44,53 +43,55 @@
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
+
-
+
diff --git a/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_GenitalSize.cs b/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_GenitalSize.cs
deleted file mode 100644
index 0f9b135..0000000
--- a/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_GenitalSize.cs
+++ /dev/null
@@ -1,34 +0,0 @@
-using RimWorld;
-using rjw;
-using Verse;
-
-namespace RJWSexperience.Ideology.PreceptWorkers
-{
- public class ThoughtWorker_Precept_GenitalSize : ThoughtWorker_Precept
- {
- private ThoughtDefExtension_StageFromValue stageFromValue;
-
- protected ThoughtDefExtension_StageFromValue StageFromValue
- {
- get
- {
- if (stageFromValue == null)
- {
- stageFromValue = def.GetModExtension();
- }
- return stageFromValue;
- }
- }
-
- protected override ThoughtState ShouldHaveThought(Pawn p)
- {
- if (p != null && Genital_Helper.get_AllPartsHediffList(p).Count > 0)
- {
- float bestSize = IdeoUtility.getGenitalSize(p);
- return ThoughtState.ActiveAtStage(StageFromValue.GetStageIndex(bestSize));
- }
- // This might can happen if the pawn has no genitalia ... maybe?
- return ThoughtState.Inactive;
- }
- }
-}
diff --git a/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_GenitalSize_Social.cs b/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_GenitalSize_Social.cs
deleted file mode 100644
index 42c6fc5..0000000
--- a/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_GenitalSize_Social.cs
+++ /dev/null
@@ -1,35 +0,0 @@
-using RimWorld;
-using rjw;
-using Verse;
-
-namespace RJWSexperience.Ideology.PreceptWorkers
-{
- public class ThoughtWorker_Precept_GenitalSize_Social : ThoughtWorker_Precept_Social
- {
- private ThoughtDefExtension_StageFromValue stageFromValue;
-
- protected ThoughtDefExtension_StageFromValue StageFromValue
- {
- get
- {
- if (stageFromValue == null)
- {
- stageFromValue = def.GetModExtension();
- }
- return stageFromValue;
- }
- }
-
- // Important Note: For the Social Worker, we measure otherPawns genitalia
- protected override ThoughtState ShouldHaveThought(Pawn p, Pawn otherPawn)
- {
- if (otherPawn != null && Genital_Helper.get_AllPartsHediffList(otherPawn).Count > 0)
- {
- float bestSize = IdeoUtility.getGenitalSize(otherPawn);
- return ThoughtState.ActiveAtStage(StageFromValue.GetStageIndex(bestSize));
- }
- // This might can happen if the pawn has no genitalia ... maybe?
- return ThoughtState.Inactive;
- }
- }
-}
diff --git a/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_NonPregnant.cs b/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_NonPregnant.cs
deleted file mode 100644
index 3631cdf..0000000
--- a/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_NonPregnant.cs
+++ /dev/null
@@ -1,21 +0,0 @@
-using RimWorld;
-using rjw;
-using Verse;
-
-namespace RJWSexperience.Ideology.PreceptWorkers
-{
- ///
- /// thought worker for a thought that is active when a certain hediff is present, and who's stage depends on the ether state of the pawn
- /// Shamelessly taken from: https://github.com/Tachyonite/Pawnmorpher/blob/master/Source/Pawnmorphs/Esoteria/Thoughts/ThoughtWorker_EtherHediff.cs
- ///
- public class ThoughtWorker_Precept_NonPregnant : ThoughtWorker_Precept
- {
- /// Gets the current thought state of the given pawn.
- /// The pawn for whom the thoughts are generated.
- ///
- protected override ThoughtState ShouldHaveThought(Pawn p)
- {
- return PregnancyHelper.GetPregnancy(p)?.Visible != true;
- }
- }
-}
diff --git a/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_NonPregnant_Social.cs b/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_NonPregnant_Social.cs
deleted file mode 100644
index d12f74a..0000000
--- a/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_NonPregnant_Social.cs
+++ /dev/null
@@ -1,22 +0,0 @@
-using RimWorld;
-using rjw;
-using Verse;
-
-namespace RJWSexperience.Ideology.PreceptWorkers
-{
- ///
- /// thought worker for a thought that is active when a certain hediff is present, and who's stage depends on the ether state of the pawn
- /// Shamelessly taken from: https://github.com/Tachyonite/Pawnmorpher/blob/master/Source/Pawnmorphs/Esoteria/Thoughts/ThoughtWorker_EtherHediff.cs
- ///
- public class ThoughtWorker_Precept_NonPregnant_Social : ThoughtWorker_Precept_Social
- {
- /// Gets the current thought state of the given pawn.
- /// The pawn for whom the thoughts are generated.
- /// The pawn about whom the thoughts are generated.
- ///
- protected override ThoughtState ShouldHaveThought(Pawn p, Pawn otherPawn)
- {
- return PregnancyHelper.GetPregnancy(otherPawn)?.Visible != true;
- }
- }
-}
diff --git a/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_Pregnant.cs b/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_Pregnant.cs
deleted file mode 100644
index ae3d917..0000000
--- a/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_Pregnant.cs
+++ /dev/null
@@ -1,21 +0,0 @@
-using RimWorld;
-using rjw;
-using Verse;
-
-namespace RJWSexperience.Ideology.PreceptWorkers
-{
- ///
- /// thought worker for a thought that is active when a certain hediff is present, and who's stage depends on the ether state of the pawn
- /// Shamelessly taken from: https://github.com/Tachyonite/Pawnmorpher/blob/master/Source/Pawnmorphs/Esoteria/Thoughts/ThoughtWorker_EtherHediff.cs
- ///
- public class ThoughtWorker_Precept_Pregnant : ThoughtWorker_Precept
- {
- /// Gets the current thought state of the given pawn.
- /// The pawn for whom the thoughts are generated.
- ///
- protected override ThoughtState ShouldHaveThought(Pawn p)
- {
- return PregnancyHelper.GetPregnancy(p)?.Visible == true;
- }
- }
-}
diff --git a/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_Pregnant_Social.cs b/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_Pregnant_Social.cs
deleted file mode 100644
index c54b814..0000000
--- a/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_Pregnant_Social.cs
+++ /dev/null
@@ -1,22 +0,0 @@
-using RimWorld;
-using rjw;
-using Verse;
-
-namespace RJWSexperience.Ideology.PreceptWorkers
-{
- ///
- /// thought worker for a thought that is active when a certain hediff is present, and who's stage depends on the ether state of the pawn
- /// Shamelessly taken from: https://github.com/Tachyonite/Pawnmorpher/blob/master/Source/Pawnmorphs/Esoteria/Thoughts/ThoughtWorker_EtherHediff.cs
- ///
- public class ThoughtWorker_Precept_Pregnant_Social : ThoughtWorker_Precept_Social
- {
- /// Gets the current thought state of the given pawn.
- /// The pawn for whom the thoughts are generated.
- /// The pawn about whom the thoughts are generated.
- ///
- protected override ThoughtState ShouldHaveThought(Pawn p, Pawn otherPawn)
- {
- return PregnancyHelper.GetPregnancy(otherPawn)?.Visible == true;
- }
- }
-}
diff --git a/Source/IdeologyAddon/Thoughts/ThoughtDefExtension_IncreaseRecord.cs b/Source/IdeologyAddon/Thoughts/ThoughtDefExtension_IncreaseRecord.cs
index cf53e45..63ce3d7 100644
--- a/Source/IdeologyAddon/Thoughts/ThoughtDefExtension_IncreaseRecord.cs
+++ b/Source/IdeologyAddon/Thoughts/ThoughtDefExtension_IncreaseRecord.cs
@@ -3,7 +3,7 @@ using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using Verse;
-namespace RJWSexperience.Ideology
+namespace RJWSexperience
{
public class ThoughtDefExtension_IncreaseRecord : DefModExtension
{
diff --git a/Source/IdeologyAddon/Thoughts/ThoughtDefExtension_StageFromValue.cs b/Source/IdeologyAddon/Thoughts/ThoughtDefExtension_StageFromOpinion.cs
similarity index 73%
rename from Source/IdeologyAddon/Thoughts/ThoughtDefExtension_StageFromValue.cs
rename to Source/IdeologyAddon/Thoughts/ThoughtDefExtension_StageFromOpinion.cs
index 8e556de..3b6bfc4 100644
--- a/Source/IdeologyAddon/Thoughts/ThoughtDefExtension_StageFromValue.cs
+++ b/Source/IdeologyAddon/Thoughts/ThoughtDefExtension_StageFromOpinion.cs
@@ -2,26 +2,13 @@
using System.Diagnostics.CodeAnalysis;
using Verse;
-namespace RJWSexperience.Ideology
+namespace RJWSexperience
{
- public class ThoughtDefExtension_StageFromValue : DefModExtension
+ public class ThoughtDefExtension_StageFromOpinion : DefModExtension
{
[SuppressMessage("Minor Code Smell", "S1104:Fields should not have public accessibility", Justification = "Field value loaded from XML")]
public List minimumValueforStage = new List();
- public int GetStageIndex(float value)
- {
- for (int i = minimumValueforStage.Count - 1; i > 0; i--)
- {
- if (minimumValueforStage[i] < value)
- {
- return i;
- }
- }
-
- return 0;
- }
-
public override IEnumerable ConfigErrors()
{
foreach (string error in base.ConfigErrors())
diff --git a/Source/IdeologyAddon/Thoughts/Thought_IncreaseRecord.cs b/Source/IdeologyAddon/Thoughts/Thought_IncreaseRecord.cs
index 1299dd3..f229813 100644
--- a/Source/IdeologyAddon/Thoughts/Thought_IncreaseRecord.cs
+++ b/Source/IdeologyAddon/Thoughts/Thought_IncreaseRecord.cs
@@ -1,6 +1,6 @@
using RimWorld;
-namespace RJWSexperience.Ideology
+namespace RJWSexperience
{
///
/// Increments record every time the thought is added
diff --git a/Source/IdeologyAddon/Thoughts/Thought_Opinionbased.cs b/Source/IdeologyAddon/Thoughts/Thought_Opinionbased.cs
index dbe0115..fded6ad 100644
--- a/Source/IdeologyAddon/Thoughts/Thought_Opinionbased.cs
+++ b/Source/IdeologyAddon/Thoughts/Thought_Opinionbased.cs
@@ -1,21 +1,22 @@
using RimWorld;
+using System.Collections.Generic;
using Verse;
-namespace RJWSexperience.Ideology
+namespace RJWSexperience
{
public class Thought_Opinionbased : Thought_Memory
{
- private ThoughtDefExtension_StageFromValue stageFromValue;
+ private List minimumValueforStage;
- protected ThoughtDefExtension_StageFromValue StageFromValue
+ protected List MinimumValueforStage
{
get
{
- if (stageFromValue == null)
+ if (minimumValueforStage == null)
{
- stageFromValue = def.GetModExtension();
+ minimumValueforStage = def.GetModExtension().minimumValueforStage;
}
- return stageFromValue;
+ return minimumValueforStage;
}
}
@@ -46,7 +47,16 @@ namespace RJWSexperience.Ideology
}
float value = pawn.relations?.OpinionOf(otherPawn) ?? 0f;
- SetForcedStage(StageFromValue.GetStageIndex(value));
+
+ for (int i = MinimumValueforStage.Count - 1; i > 0; i--)
+ {
+ if (MinimumValueforStage[i] < value)
+ {
+ SetForcedStage(i);
+ return;
+ }
+ }
+ SetForcedStage(0);
}
}
}