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 - +