From fe0957365d866b493ab9a6ecd6bea47e33d1948e Mon Sep 17 00:00:00 2001 From: "p.tychinin" Date: Tue, 7 May 2024 04:03:56 +0300 Subject: [PATCH] =?UTF-8?q?=EF=BB=BF1.1.3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 1.5/Assemblies/ResearchWhatever.dll | Bin 17408 -> 18432 bytes About/ModIcon.png | Bin 0 -> 1817 bytes .../Patches/StudyManagerPatch.cs | 35 +++++++++++++----- .../Patches/WorkGiver_ResearcherPatch.cs | 2 +- change.log | 7 +++- 5 files changed, 33 insertions(+), 11 deletions(-) create mode 100644 About/ModIcon.png diff --git a/1.5/Assemblies/ResearchWhatever.dll b/1.5/Assemblies/ResearchWhatever.dll index e8577df871f86afe1c34c3ebd118dcaf4a175052..d99a55e2aea3187fae2967b33a1b81e317a776b6 100644 GIT binary patch delta 7263 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 a)LC!V3>WM5ReURWQAMvg;|%L6asD4J`4%?- delta 6490 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.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) + var projs = DefDatabase.AllDefsListForReading.Where((ResearchProjectDef x) => x.CanStartNow && x.knowledgeCategory == knowledgeCategory).ToList(); + if (projs.NullOrEmpty() && knowledgeCategory.overflowCategory != null) + projs = DefDatabase.AllDefsListForReading.Where((ResearchProjectDef x) => x.CanStartNow && x.knowledgeCategory == knowledgeCategory.overflowCategory).ToList(); + + if (projs.NullOrEmpty()) { - //CompStudiable compStudiable = studiedThing.TryGetComp(); - //if (compStudiable == null) - // return; + CompStudiable compStudiable = studiedThing.TryGetComp(); + CompHoldingPlatformTarget compHoldingPlatformTarget = studiedThing.TryGetComp(); + + bool b = false; + if (compStudiable != null && compStudiable.Completed) + { + compStudiable.studyEnabled = false; + b = true; + } // - //if (compStudiable.Completed) ; + if (compHoldingPlatformTarget != null) + { + compHoldingPlatformTarget.containmentMode = EntityContainmentMode.MaintainOnly; + b = b || compStudiable != null; + } + + if (b) Messages.Message("ResearchWhateverNothingLeftToResearch".Translate(studiedThing.Label).CapitalizeFirst(), new TargetInfo(studiedThing.PositionHeld, studiedThing.MapHeld, false), MessageTypeDefOf.NeutralEvent); + return; } + projs.SortBy(x => x.CostApparent - x.ProgressApparent); + proj = projs.First(); + projs.TryRandomElementByWeight(x => x.CostApparent == proj.CostApparent ? 1f : 0f, out proj); + SoundDefOf.ResearchStart.PlayOneShotOnCamera(null); researchManager.SetCurrentProject(proj); Thing thing = studiedThing; diff --git a/Source/ResearchWhatever15/Patches/WorkGiver_ResearcherPatch.cs b/Source/ResearchWhatever15/Patches/WorkGiver_ResearcherPatch.cs index 392ac64..ce922f1 100644 --- a/Source/ResearchWhatever15/Patches/WorkGiver_ResearcherPatch.cs +++ b/Source/ResearchWhatever15/Patches/WorkGiver_ResearcherPatch.cs @@ -73,7 +73,7 @@ namespace ResearchWhatever.Patches Messages.Message("ResearchWhateverNothingLeftToResearch".Translate(bench.Label).CapitalizeFirst(), new TargetInfo(bench.Position, bench.Map, false), MessageTypeDefOf.NeutralEvent); return; } - projects.SortBy(x => x.GetModExtension()?.lowPriority == true ? 100000000f + x.CostApparent : x.CostApparent); + projects.SortBy(x => x.GetModExtension()?.lowPriority == true ? 100000000f + x.CostApparent - x.ProgressApparent : x.CostApparent - x.ProgressApparent); ResearchProjectDef def = projects.First(); projects.TryRandomElementByWeight(x => x.CostApparent == def.CostApparent ? 1f : 0f, out def); diff --git a/change.log b/change.log index 36bb802..d698694 100644 --- a/change.log +++ b/change.log @@ -1,4 +1,9 @@ -1.1.2 +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; + +1.1.2 - added sound notification when new anomaly project picked; 1.1.1