diff --git a/1.3/Defs/PreceptDefs/Precepts_SizeMatters.xml b/1.3/Defs/PreceptDefs/Precepts_SizeMatters.xml
index b9bc867..7589a2a 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.ThoughtWorker_Precept_GenitalSize_Approved
+ RJWSexperience.Ideology.PreceptWorkers.ThoughtWorker_Precept_GenitalSize
@@ -91,11 +91,24 @@
+10
+
+
+
+
+ 0
+ 0.2
+ 0.4
+ 0.6
+ 0.8
+
+
+
GenitalSize_Disapproved
- RJWSexperience.Ideology.ThoughtWorker_Precept_GenitalSize_Disapproved
+ RJWSexperience.Ideology.PreceptWorkers.ThoughtWorker_Precept_GenitalSize
Thought_Situational
@@ -124,13 +137,26 @@
-10
+
+
+
+
+ 0
+ 0.2
+ 0.4
+ 0.6
+ 0.8
+
+
+
GenitalSize_Approved_Social
- RJWSexperience.Ideology.ThoughtWorker_Precept_GenitalSize_Approved_Social
+ RJWSexperience.Ideology.PreceptWorkers.ThoughtWorker_Precept_GenitalSize_Social
Thought_SituationalSocial
@@ -146,12 +172,23 @@
+5
+
+
+
+
+ 0
+ 0.4
+ 0.6
+
+
+
GenitalSize_Disapproved_Social
- RJWSexperience.Ideology.ThoughtWorker_Precept_GenitalSize_Disapproved_Social
+ RJWSexperience.Ideology.PreceptWorkers.ThoughtWorker_Precept_GenitalSize_Social
Thought_SituationalSocial
@@ -167,6 +204,17 @@
+5
+
+
+
+
+ 0
+ 0.4
+ 0.6
+
+
+
\ No newline at end of file
diff --git a/Source/IdeologyAddon/Ideology/PreceptWorkers/ThoughtWorker_Precept_GenitalSize.cs b/Source/IdeologyAddon/Ideology/PreceptWorkers/ThoughtWorker_Precept_GenitalSize.cs
new file mode 100644
index 0000000..0f9b135
--- /dev/null
+++ b/Source/IdeologyAddon/Ideology/PreceptWorkers/ThoughtWorker_Precept_GenitalSize.cs
@@ -0,0 +1,34 @@
+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/Ideology/PreceptWorkers/ThoughtWorker_Precept_GenitalSize_Approved.cs b/Source/IdeologyAddon/Ideology/PreceptWorkers/ThoughtWorker_Precept_GenitalSize_Approved.cs
deleted file mode 100644
index 6c5f491..0000000
--- a/Source/IdeologyAddon/Ideology/PreceptWorkers/ThoughtWorker_Precept_GenitalSize_Approved.cs
+++ /dev/null
@@ -1,31 +0,0 @@
-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
deleted file mode 100644
index 22dadbe..0000000
--- a/Source/IdeologyAddon/Ideology/PreceptWorkers/ThoughtWorker_Precept_GenitalSize_Approved_Social.cs
+++ /dev/null
@@ -1,29 +0,0 @@
-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
deleted file mode 100644
index 7f7eae2..0000000
--- a/Source/IdeologyAddon/Ideology/PreceptWorkers/ThoughtWorker_Precept_GenitalSize_Disapproved.cs
+++ /dev/null
@@ -1,32 +0,0 @@
-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
deleted file mode 100644
index 7df72e4..0000000
--- a/Source/IdeologyAddon/Ideology/PreceptWorkers/ThoughtWorker_Precept_GenitalSize_Disapproved_Social.cs
+++ /dev/null
@@ -1,28 +0,0 @@
-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_GenitalSize_Social.cs b/Source/IdeologyAddon/Ideology/PreceptWorkers/ThoughtWorker_Precept_GenitalSize_Social.cs
new file mode 100644
index 0000000..42c6fc5
--- /dev/null
+++ b/Source/IdeologyAddon/Ideology/PreceptWorkers/ThoughtWorker_Precept_GenitalSize_Social.cs
@@ -0,0 +1,35 @@
+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/IdeologyAddon.csproj b/Source/IdeologyAddon/IdeologyAddon.csproj
index 51feffa..96f92ee 100644
--- a/Source/IdeologyAddon/IdeologyAddon.csproj
+++ b/Source/IdeologyAddon/IdeologyAddon.csproj
@@ -52,10 +52,8 @@
-
-
-
-
+
+
@@ -89,7 +87,7 @@
-
+