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 - 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
  • @@ -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
  • @@ -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
  • @@ -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
  • @@ -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
  • - - +5 + + -5
  • 0
  • - - -5 + + +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
  • +
  • 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); } } }