diff --git a/RJWSexperience/IdeologyAddon/Ideology/Thought_IncreaseRecord.cs b/RJWSexperience/IdeologyAddon/Ideology/Thought_IncreaseRecord.cs
new file mode 100644
index 0000000..62f31c7
--- /dev/null
+++ b/RJWSexperience/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/RJWSexperience/IdeologyAddon/Ideology/Thought_Opinionbased.cs b/RJWSexperience/IdeologyAddon/Ideology/Thought_Opinionbased.cs
new file mode 100644
index 0000000..4b6d30e
--- /dev/null
+++ b/RJWSexperience/IdeologyAddon/Ideology/Thought_Opinionbased.cs
@@ -0,0 +1,36 @@
+using RimWorld;
+using System.Collections.Generic;
+
+namespace RJWSexperience.Ideology
+{
+ ///
+ /// ThoughtDef using opinion
+ ///
+ public class ThoughtDef_Opinionbased : ThoughtDef
+ {
+ 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/RJWSexperience/IdeologyAddon/Ideology/Thought_Recordbased.cs b/RJWSexperience/IdeologyAddon/Ideology/Thought_Recordbased.cs
new file mode 100644
index 0000000..6af7950
--- /dev/null
+++ b/RJWSexperience/IdeologyAddon/Ideology/Thought_Recordbased.cs
@@ -0,0 +1,38 @@
+using RimWorld;
+using System.Collections.Generic;
+
+namespace RJWSexperience.Ideology
+{
+ ///
+ /// ThoughtDef using record
+ ///
+ public class ThoughtDef_Recordbased : ThoughtDef
+ {
+ public RecordDef recordDef;
+ public List minimumValueforStage = new List();
+ public float increment;
+ }
+
+ ///
+ /// Thought class using record.
+ ///
+ public class Thought_Recordbased : Thought_Memory
+ {
+ protected ThoughtDef_Recordbased Def => (ThoughtDef_Recordbased)def;
+ protected RecordDef recordDef => Def.recordDef;
+ protected List minimumValueforStage => Def.minimumValueforStage;
+
+ public override int CurStageIndex
+ {
+ get
+ {
+ float value = pawn?.records?.GetValue(recordDef) ?? 0f;
+ for (int i = minimumValueforStage.Count - 1; i > 0; i--)
+ {
+ if (minimumValueforStage[i] < value) return i + 1;
+ }
+ return 0;
+ }
+ }
+ }
+}
diff --git a/RJWSexperience/IdeologyAddon/IdeologyAddon.csproj b/RJWSexperience/IdeologyAddon/IdeologyAddon.csproj
index 620b567..b4c000d 100644
--- a/RJWSexperience/IdeologyAddon/IdeologyAddon.csproj
+++ b/RJWSexperience/IdeologyAddon/IdeologyAddon.csproj
@@ -76,6 +76,9 @@
+
+
+
diff --git a/RJWSexperience/RJWSexperience/RJWSexperience.csproj b/RJWSexperience/RJWSexperience/RJWSexperience.csproj
index 6ccae5f..c2ab013 100644
--- a/RJWSexperience/RJWSexperience/RJWSexperience.csproj
+++ b/RJWSexperience/RJWSexperience/RJWSexperience.csproj
@@ -88,7 +88,7 @@
-
+
diff --git a/RJWSexperience/RJWSexperience/Thought_AteCum.cs b/RJWSexperience/RJWSexperience/Thought_AteCum.cs
new file mode 100644
index 0000000..415bfea
--- /dev/null
+++ b/RJWSexperience/RJWSexperience/Thought_AteCum.cs
@@ -0,0 +1,38 @@
+using RimWorld;
+
+namespace RJWSexperience
+{
+ public class Thought_AteCum : Thought_Recordbased
+ {
+ public override int CurStageIndex
+ {
+ get
+ {
+ if (pawn?.health?.hediffSet?.HasHediff(VariousDefOf.CumAddiction) ?? false) return minimumValueforStage.Count;
+ return base.CurStageIndex;
+ }
+ }
+
+ public override bool TryMergeWithExistingMemory(out bool showBubble)
+ {
+ ThoughtHandler thoughts = pawn.needs.mood.thoughts;
+ if (thoughts.memories.NumMemoriesInGroup(this) >= def.stackLimit)
+ {
+ Thought_AteCum thought_Memory = (Thought_AteCum)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;
+ }
+
+ protected virtual void Merged()
+ {
+ age = 0;
+ }
+ }
+}
diff --git a/RJWSexperience/RJWSexperience/Thought_Opinionbased.cs b/RJWSexperience/RJWSexperience/Thought_Opinionbased.cs
deleted file mode 100644
index 7442e35..0000000
--- a/RJWSexperience/RJWSexperience/Thought_Opinionbased.cs
+++ /dev/null
@@ -1,42 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using Verse;
-using RimWorld;
-
-
-namespace RJWSexperience
-{
- ///
- /// ThoughtDef using opinion
- ///
- public class ThoughtDef_Opinionbased : ThoughtDef
- {
- 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/RJWSexperience/RJWSexperience/Thought_Recordbased.cs b/RJWSexperience/RJWSexperience/Thought_Recordbased.cs
index 6080e86..daab15e 100644
--- a/RJWSexperience/RJWSexperience/Thought_Recordbased.cs
+++ b/RJWSexperience/RJWSexperience/Thought_Recordbased.cs
@@ -1,131 +1,37 @@
-using System;
+using RimWorld;
using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using Verse;
-using RimWorld;
-
namespace RJWSexperience
{
- ///
- /// ThoughtDef using record
- ///
- public class ThoughtDef_Recordbased : ThoughtDef
- {
- public RecordDef recordDef;
- public List minimumValueforStage = new List();
- public float increment;
- }
-
- ///
- /// Thought class using record.
- ///
- public class Thought_Recordbased : Thought_Memory
- {
- protected ThoughtDef_Recordbased Def => (ThoughtDef_Recordbased)def;
- protected RecordDef recordDef => Def.recordDef;
- protected List minimumValueforStage => Def.minimumValueforStage;
- protected float increment => Def.increment;
-
- public override int CurStageIndex
- {
- get
- {
- float value = pawn?.records?.GetValue(recordDef) ?? 0f;
- for (int i = minimumValueforStage.Count - 1; i > 0; i--)
- {
- if (minimumValueforStage[i] < value) return i + 1;
- }
- return 0;
- }
- }
- }
-
- public class Thought_AteCum : Thought_Recordbased
- {
- public override int CurStageIndex
- {
- get
- {
- if (pawn?.health?.hediffSet?.HasHediff(VariousDefOf.CumAddiction) ?? false) return minimumValueforStage.Count;
- return base.CurStageIndex;
- }
- }
-
- public override bool TryMergeWithExistingMemory(out bool showBubble)
- {
- ThoughtHandler thoughts = pawn.needs.mood.thoughts;
- if (thoughts.memories.NumMemoriesInGroup(this) >= def.stackLimit)
- {
- Thought_AteCum thought_Memory = (Thought_AteCum)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;
- }
-
- protected virtual void Merged()
- {
- age = 0;
- }
- }
-
- 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 = increment;
- }
- protected virtual void Merged()
- {
- age = 0;
- recordIncrement += increment;
- }
- }
+ ///
+ /// ThoughtDef using record
+ ///
+ public class ThoughtDef_Recordbased : ThoughtDef
+ {
+ public RecordDef recordDef;
+ public List minimumValueforStage = new List();
+ }
+ ///
+ /// Thought class using record.
+ ///
+ public class Thought_Recordbased : Thought_Memory
+ {
+ protected ThoughtDef_Recordbased Def => (ThoughtDef_Recordbased)def;
+ protected RecordDef recordDef => Def.recordDef;
+ protected List minimumValueforStage => Def.minimumValueforStage;
+ public override int CurStageIndex
+ {
+ get
+ {
+ float value = pawn?.records?.GetValue(recordDef) ?? 0f;
+ for (int i = minimumValueforStage.Count - 1; i > 0; i--)
+ {
+ if (minimumValueforStage[i] < value) return i + 1;
+ }
+ return 0;
+ }
+ }
+ }
}
diff --git a/RJWSexperience_Ideology/Defs/PreceptDefs/Precepts_Sex.xml b/RJWSexperience_Ideology/Defs/PreceptDefs/Precepts_Sex.xml
index cbe18a9..61668bb 100644
--- a/RJWSexperience_Ideology/Defs/PreceptDefs/Precepts_Sex.xml
+++ b/RJWSexperience_Ideology/Defs/PreceptDefs/Precepts_Sex.xml
@@ -236,11 +236,11 @@
-
+
Sex_Promiscuous
1
1
- RJWSexperience.Thought_IncreaseRecord
+ RJWSexperience.Ideology.Thought_IncreaseRecord
Lust
3.0
@@ -250,7 +250,7 @@
5
-
+
Sex_NonPromiscuous
diff --git a/RJWSexperience_Ideology/Defs/PreceptDefs/Precepts_Virginity.xml b/RJWSexperience_Ideology/Defs/PreceptDefs/Precepts_Virginity.xml
index 2d38c04..2a57c7c 100644
--- a/RJWSexperience_Ideology/Defs/PreceptDefs/Precepts_Virginity.xml
+++ b/RJWSexperience_Ideology/Defs/PreceptDefs/Precepts_Virginity.xml
@@ -258,9 +258,9 @@
-
+
Virgin_Precious_Taken
- RJWSexperience.Thought_Opinionbased
+ RJWSexperience.Ideology.Thought_Opinionbased
7
1
@@ -291,11 +291,11 @@
5
-
+
-
+
Virgin_Shameful_Taken
- RJWSexperience.Thought_Opinionbased
+ RJWSexperience.Ideology.Thought_Opinionbased
7
1
@@ -320,7 +320,7 @@
20
-
+