protected ResearchProjectDef ApplyPointsToResearch(float points) { ResearchManager researchManager = Find.ResearchManager; if (!researchManager.AnyProjectIsAvailable) { return(null); } ResearchProjectDef research; IEnumerable <ResearchProjectDef> researchList = (from x in DefDatabase <ResearchProjectDef> .AllDefsListForReading where x.CanStartNow select x); ResearchProjectDef currentResearch = researchManager.currentProj; researchList.TryRandomElementByWeight((ResearchProjectDef x) => 1 / x.baseCost, out research); //points need to multiplied points *= 121f; researchManager.currentProj = research; researchManager.ResearchPerformed(points, null); researchManager.currentProj = currentResearch; return(research); }