public static PLExtractor CreateExtractor(int Subtype, int level)
        {
            PLExtractor InExtractor;

            if (Subtype >= Instance.VanillaExtractorMaxType)
            {
                InExtractor = new PLExtractor(EExtractorType.E_MAX, level);
                int subtypeformodded = Subtype - Instance.VanillaExtractorMaxType;
                if (subtypeformodded <= Instance.ExtractorTypes.Count && subtypeformodded > -1)
                {
                    ExtractorMod ExtractorType = Instance.ExtractorTypes[Subtype - Instance.VanillaExtractorMaxType];
                    InExtractor.SubType                       = Subtype;
                    InExtractor.Name                          = ExtractorType.Name;
                    InExtractor.Desc                          = ExtractorType.Description;
                    InExtractor.m_IconTexture                 = ExtractorType.IconTexture;
                    InExtractor.m_Stability                   = ExtractorType.Stability;
                    InExtractor.m_MarketPrice                 = ExtractorType.MarketPrice;
                    InExtractor.CargoVisualPrefabID           = ExtractorType.CargoVisualID;
                    InExtractor.CanBeDroppedOnShipDeath       = ExtractorType.CanBeDroppedOnShipDeath;
                    InExtractor.Experimental                  = ExtractorType.Experimental;
                    InExtractor.Unstable                      = ExtractorType.Unstable;
                    InExtractor.Contraband                    = ExtractorType.Contraband;
                    InExtractor.Price_LevelMultiplierExponent = ExtractorType.Price_LevelMultiplierExponent;
                }
            }
            else
            {
                InExtractor = new PLExtractor((EExtractorType)Subtype, level);
            }
            return(InExtractor);
        }
        static void Postfix(PLExtractor __instance, ref string __result)
        {
            int subtypeformodded = __instance.SubType - ExtractorModManager.Instance.VanillaExtractorMaxType;

            if (subtypeformodded > -1 && subtypeformodded < ExtractorModManager.Instance.ExtractorTypes.Count && __instance.ShipStats != null)
            {
                __result = ExtractorModManager.Instance.ExtractorTypes[subtypeformodded].GetStatLineRight(__instance);
            }
        }
        public static PLExtractor CreateExtractor(int Subtype, int level)
        {
            PLExtractor InExtractor;

            if (Subtype >= Instance.VanillaExtractorMaxType)
            {
                InExtractor = new PLExtractor(EExtractorType.E_MAX, level);
                int subtypeformodded = Subtype - Instance.VanillaExtractorMaxType;
                if (Global.DebugLogging)
                {
                    Logger.Info($"Subtype for modded is {subtypeformodded}");
                }
                if (subtypeformodded <= Instance.ExtractorTypes.Count && subtypeformodded > -1)
                {
                    if (Global.DebugLogging)
                    {
                        Logger.Info("Creating Extractor from list info");
                    }
                    ExtractorPlugin ExtractorType = Instance.ExtractorTypes[Subtype - Instance.VanillaExtractorMaxType];
                    InExtractor.SubType = Subtype;
                    InExtractor.Name    = ExtractorType.Name;
                    InExtractor.Desc    = ExtractorType.Description;
                    InExtractor.GetType().GetField("m_IconTexture", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(InExtractor, ExtractorType.IconTexture);
                    InExtractor.GetType().GetField("m_Stability", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(InExtractor, ExtractorType.Stability);
                    InExtractor.GetType().GetField("m_MarketPrice", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(InExtractor, (ObscuredInt)ExtractorType.MarketPrice);
                    InExtractor.CargoVisualPrefabID     = ExtractorType.CargoVisualID;
                    InExtractor.CanBeDroppedOnShipDeath = ExtractorType.CanBeDroppedOnShipDeath;
                    InExtractor.Experimental            = ExtractorType.Experimental;
                    InExtractor.Unstable   = ExtractorType.Unstable;
                    InExtractor.Contraband = ExtractorType.Contraband;
                    InExtractor.GetType().GetField("Price_LevelMultiplierExponent", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(InExtractor, (ObscuredFloat)ExtractorType.Price_LevelMultiplierExponent);
                }
            }
            else
            {
                InExtractor = new PLExtractor((EExtractorType)Subtype, level);
            }
            return(InExtractor);
        }
        public override string GetStatLineRight(PLShipComponent InComp)
        {
            PLExtractor me = InComp as PLExtractor;

            return(((float)me.m_Stability * 10f).ToString("0"));
        }