diff --git a/1.5/Assemblies/ResearchWhatever.dll b/1.5/Assemblies/ResearchWhatever.dll index d99a55e..13a68c4 100644 Binary files a/1.5/Assemblies/ResearchWhatever.dll and b/1.5/Assemblies/ResearchWhatever.dll differ diff --git a/Source/ResearchWhatever15/Patches/StudyManagerPatch.cs b/Source/ResearchWhatever15/Patches/StudyManagerPatch.cs index 1099bcb..cdc30f8 100644 --- a/Source/ResearchWhatever15/Patches/StudyManagerPatch.cs +++ b/Source/ResearchWhatever15/Patches/StudyManagerPatch.cs @@ -3,6 +3,7 @@ using RimWorld; using System; using System.Collections.Generic; using System.Linq; +using System.Reflection; using System.Security.Cryptography; using System.Text; using System.Threading.Tasks; @@ -14,6 +15,7 @@ namespace ResearchWhatever.Patches [HarmonyPatch(typeof(StudyManager), "StudyAnomaly")] static class StudyManager_StudyAnomaly_ResearchWhateverPatch { + private static readonly PropertyInfo LStudyCompleted = AccessTools.Property(typeof(ITab_StudyNotes), "StudyCompleted"); internal static void Prefix(Thing studiedThing, Pawn studier, float knowledgeAmount, KnowledgeCategoryDef knowledgeCategory) { if (!ModsConfig.AnomalyActive) @@ -47,11 +49,23 @@ namespace ResearchWhatever.Patches CompHoldingPlatformTarget compHoldingPlatformTarget = studiedThing.TryGetComp(); bool b = false; - if (compStudiable != null && compStudiable.Completed) - { - compStudiable.studyEnabled = false; - b = true; - } + if (compStudiable != null) + if (compStudiable.Completed) + { + compStudiable.studyEnabled = false; + b = true; + } + else + { + if (studiedThing.GetInspectTabs().FirstOrDefault( + x => x is ITab_StudyNotes + || x.GetType().IsSubclassOf(typeof(ITab_StudyNotes))) is ITab_StudyNotes tab + && (bool)LStudyCompleted.GetValue(tab)) + { + compStudiable.studyEnabled = false; + b = true; + } + } // if (compHoldingPlatformTarget != null) { diff --git a/change.log b/change.log index d698694..c23f523 100644 --- a/change.log +++ b/change.log @@ -1,4 +1,7 @@ -1.1.3 +1.1.4 +- studiable objects now also auto-toggle off; + +1.1.3 - mod now automatically picks CHEAPEST anomaly research; - if anomly is fully studied and nothing left to research, study will be automatically toggled off; - cheapest project now takes into account already made progress;