public override string GetInfo()
        {
            string ret = "";
            string reqLab = "", reqCyclo = "", reqZoo = "";

            foreach (var r in requirements)
            {
                if (ret != "")
                {
                    ret += "\n";
                }
                ret += r.Value.name + " " + Localizer.Format("#autoLOC_StatSci_Req", r.Value.amount);
                if (r.Value.name == EUREKAS)
                {
                    reqLab = Localizer.Format("#autoLOC_StatSci_LabReq");
                }
                if (r.Value.name == KUARQS)
                {
                    double productionRequired = 0.01;
                    if (kuarqHalflife > 0)
                    {
                        if (ret != "")
                        {
                            ret += "\n";
                        }
                        ret += Localizer.Format("#autoLOC_StatSci_KuarkHalf", kuarqHalflife);
                        productionRequired = requirements[KUARQS].amount /* kuarqsRequired */ * (1 - Math.Pow(.5, 1.0 / kuarqHalflife));
                        ret += "\n";
                        ret += Localizer.Format("#autoLOC_StatSci_KuarkProd", productionRequired.ToString("F3"));
                    }
                    if (productionRequired > 1)
                    {
                        reqCyclo = Localizer.Format("#autoLOC_StatSci_CycReqM", Math.Ceiling(productionRequired));
                    }
                    else
                    {
                        reqCyclo = Localizer.Format("#autoLOC_StatSci_CycReq");
                    }
                }
                if (r.Value.name == BIOPRODUCTS)
                {
                    double bioproductDensity = ResourceHelper.getResourceDensity(BIOPRODUCTS);
                    if (bioproductDensity > 0)
                    {
                        ret += Localizer.Format("#autoLOC_StatSci_BioMass", Math.Round(requirements[BIOPRODUCTS].amount /* bioproductsRequired */ * bioproductDensity + part.mass, 2));
                    }
                    reqZoo = Localizer.Format("#autoLOC_StatSci_ZooReq");
                }
            }
#if false
            //if (eurekasRequired > 0)
            //{
            //    ret += Localizer.Format("#autoLOC_StatSci_EuReq", eurekasRequired);
            //    reqLab = Localizer.Format("#autoLOC_StatSci_LabReq");
            //}
            if (kuarqsRequired > 0)
            {
                if (ret != "")
                {
                    ret += "\n";
                }
                ret += Localizer.Format("#autoLOC_StatSci_KuarkReq", kuarqsRequired);
                double productionRequired = 0.01;
                if (kuarqHalflife > 0)
                {
                    if (ret != "")
                    {
                        ret += "\n";
                    }
                    ret += Localizer.Format("#autoLOC_StatSci_KuarkHalf", kuarqHalflife);
                    productionRequired = kuarqsRequired * (1 - Math.Pow(.5, 1.0 / kuarqHalflife));
                    ret += "\n";
                    ret += Localizer.Format("#autoLOC_StatSci_KuarkProd", productionRequired);
                }
                if (productionRequired > 1)
                {
                    reqCyclo = Localizer.Format("#autoLOC_StatSci_CycReqM", Math.Ceiling(productionRequired));
                }
                else
                {
                    reqCyclo = Localizer.Format("#autoLOC_StatSci_CycReq");
                }
            }
            if (bioproductsRequired > 0)
            {
                if (ret != "")
                {
                    ret += "\n";
                }
                ret += Localizer.Format("#autoLOC_StatSci_BioReq", bioproductsRequired);
                double bioproductDensity = ResourceHelper.getResourceDensity(BIOPRODUCTS);
                if (bioproductDensity > 0)
                {
                    ret += Localizer.Format("#autoLOC_StatSci_BioMass", Math.Round(bioproductsRequired * bioproductDensity + part.mass, 2));
                }
                reqZoo = Localizer.Format("#autoLOC_StatSci_ZooReq");
            }
#endif
            return(ret + reqLab + reqCyclo + reqZoo + "\n\n" + base.GetInfo());
        }
 public double GetResourceMaxAmount(string name)
 {
     return(ResourceHelper.getResourceMaxAmount(part, name));
 }
 public PartResource SetResourceMaxAmount(string name, double max)
 {
     return(ResourceHelper.setResourceMaxAmount(part, name, max));
 }
 public PartResource GetResource(string name)
 {
     return(ResourceHelper.getResource(part, name));
 }