From 323b82bdc4b2712587df5de72b2912076a8fc5fb Mon Sep 17 00:00:00 2001 From: "p.tychinin" Date: Mon, 22 Apr 2024 20:57:33 +0300 Subject: [PATCH] =?UTF-8?q?=EF=BB=BF1.1.2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 1.5/Assemblies/ResearchWhatever.dll | Bin 16384 -> 17408 bytes .../Patches/ResearchManagerPatch.cs | 14 ++-- .../Patches/StudyManagerPatch.cs | 61 ++++++++++++++++++ .../ResearchWhatever.csproj | 1 + change.log | 11 +++- 5 files changed, 78 insertions(+), 9 deletions(-) create mode 100644 Source/ResearchWhatever15/Patches/StudyManagerPatch.cs diff --git a/1.5/Assemblies/ResearchWhatever.dll b/1.5/Assemblies/ResearchWhatever.dll index 00334d64832001a5f9d93ddbb85a4072995d7963..e8577df871f86afe1c34c3ebd118dcaf4a175052 100644 GIT binary patch delta 7231 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 Q@bQzoL({%sU89}<3&ok(R{#J2 delta 6473 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 rRpVE>*Uw|?-0xeTAca83jT===@8tVT)^!s$# diff --git a/Source/ResearchWhatever15/Patches/ResearchManagerPatch.cs b/Source/ResearchWhatever15/Patches/ResearchManagerPatch.cs index 4ab47cb..2f41183 100644 --- a/Source/ResearchWhatever15/Patches/ResearchManagerPatch.cs +++ b/Source/ResearchWhatever15/Patches/ResearchManagerPatch.cs @@ -8,9 +8,9 @@ using Verse.Sound; namespace ResearchWhatever.Patches { [HarmonyPatch(typeof(ResearchManager), "FinishProject")] - public static class ResearchManager_FinishProject_ResearchWhateverPatch + static class ResearchManager_FinishProject_ResearchWhateverPatch { - public static void Prefix(ResearchManager __instance, ref bool doCompletionDialog) + internal static void Prefix(ResearchProjectDef proj, ref bool doCompletionDialog) { if (doCompletionDialog) { @@ -20,18 +20,18 @@ namespace ResearchWhatever.Patches doCompletionDialog = false; - var currentProj = __instance.GetProject(); + //var currentProj = __instance.GetProject(); switch (comp.NotifyMode) { - case ResearchWhateverNotifyMode.rwnLetter: - Find.LetterStack.ReceiveLetter("ResearchFinished".Translate(currentProj.LabelCap), currentProj.description, LetterDefOf.PositiveEvent, null, null, null, null, null); + case ResearchWhateverNotifyMode.rwnLetter: + Find.LetterStack.ReceiveLetter("ResearchFinished".Translate(proj.LabelCap), proj.description, LetterDefOf.PositiveEvent, null, null, null, null, null); break; case ResearchWhateverNotifyMode.rwnNotice: - Messages.Message("ResearchFinished".Translate(currentProj.LabelCap).CapitalizeFirst(), MessageTypeDefOf.SilentInput); + Messages.Message("ResearchFinished".Translate(proj.LabelCap).CapitalizeFirst(), MessageTypeDefOf.SilentInput); break; default: break; - } + } } } } diff --git a/Source/ResearchWhatever15/Patches/StudyManagerPatch.cs b/Source/ResearchWhatever15/Patches/StudyManagerPatch.cs new file mode 100644 index 0000000..3c222bb --- /dev/null +++ b/Source/ResearchWhatever15/Patches/StudyManagerPatch.cs @@ -0,0 +1,61 @@ +using HarmonyLib; +using RimWorld; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Security.Cryptography; +using System.Text; +using System.Threading.Tasks; +using Verse; +using Verse.Sound; + +namespace ResearchWhatever.Patches +{ + [HarmonyPatch(typeof(StudyManager), "StudyAnomaly")] + static class StudyManager_StudyAnomaly_ResearchWhateverPatch + { + internal static void Prefix(Thing studiedThing, Pawn studier, float knowledgeAmount, KnowledgeCategoryDef knowledgeCategory) + { + if (!ModsConfig.AnomalyActive) + { + return; + } + if (knowledgeAmount <= 0f) + { + return; + } + // + var researchManager = Find.ResearchManager; + var proj = researchManager.GetProject(knowledgeCategory); + + if (proj != null) + return; + + if (knowledgeCategory.overflowCategory != null) + proj = researchManager.GetProject(knowledgeCategory.overflowCategory); + // + if (proj != null) + return; + + proj = DefDatabase.AllDefsListForReading.FirstOrDefault((ResearchProjectDef x) => x.CanStartNow && x.knowledgeCategory == knowledgeCategory); + if (proj == null && knowledgeCategory.overflowCategory != null) + proj = DefDatabase.AllDefsListForReading.FirstOrDefault((ResearchProjectDef x) => x.CanStartNow && x.knowledgeCategory == knowledgeCategory.overflowCategory); + + if (proj == null) + { + //CompStudiable compStudiable = studiedThing.TryGetComp(); + //if (compStudiable == null) + // return; + // + //if (compStudiable.Completed) ; + return; + } + SoundDefOf.ResearchStart.PlayOneShotOnCamera(null); + researchManager.SetCurrentProject(proj); + Thing thing = studiedThing; + if (thing.Map == null) thing = thing.ParentHolder as Thing; + TutorSystem.Notify_Event("StartResearchProject"); + Messages.Message("ResearchWhateverNewResearch".Translate(studier.Name.ToStringFull, proj.label).CapitalizeFirst(), new TargetInfo(thing.Position, thing.Map, false), MessageTypeDefOf.SilentInput); + } + } +} diff --git a/Source/ResearchWhatever15/ResearchWhatever.csproj b/Source/ResearchWhatever15/ResearchWhatever.csproj index 53856a4..3e6c34b 100644 --- a/Source/ResearchWhatever15/ResearchWhatever.csproj +++ b/Source/ResearchWhatever15/ResearchWhatever.csproj @@ -63,6 +63,7 @@ + diff --git a/change.log b/change.log index 6e3b4dd..36bb802 100644 --- a/change.log +++ b/change.log @@ -1,11 +1,18 @@ -1.1.0 +1.1.2 +- added sound notification when new anomaly project picked; + +1.1.1 +- fixed notification messages for anomaly projects showing that "current normal project" is finished; +- anomaly researchers now automatically start anomaly projects when possible; + +1.1.0 - 1.5 be like; 1.0.7 - made a minor change that probably should improve cases when mods add their own requirements for research (thanks @Taranchuk); other -- little hint to put this mod before "research re-invenred" mod. +- little hint to put this mod before "research re-invenred" mod; 1.0.6 - added checking for new prerequisites;