HullPluginManager()
 {
     VanillaHullMaxType = Enum.GetValues(typeof(EHullType)).Length;
     Logger.Info($"MaxTypeint = {VanillaHullMaxType - 1}");
     foreach (PulsarPlugin plugin in PluginManager.Instance.GetAllPlugins())
     {
         Assembly asm        = plugin.GetType().Assembly;
         Type     HullPlugin = typeof(HullPlugin);
         foreach (Type t in asm.GetTypes())
         {
             if (HullPlugin.IsAssignableFrom(t) && !t.IsInterface && !t.IsAbstract)
             {
                 Logger.Info("Loading Hull from assembly");
                 HullPlugin HullPluginHandler = (HullPlugin)Activator.CreateInstance(t);
                 if (GetHullIDFromName(HullPluginHandler.Name) == -1)
                 {
                     HullTypes.Add(HullPluginHandler);
                     Logger.Info($"Added Hull: '{HullPluginHandler.Name}' with ID '{GetHullIDFromName(HullPluginHandler.Name)}'");
                 }
                 else
                 {
                     Logger.Info($"Could not add Hull from {plugin.Name} with the duplicate name of '{HullPluginHandler.Name}'");
                 }
             }
         }
     }
 }
        public static PLHull CreateHull(int Subtype, int level)
        {
            PLHull InHull;

            if (Subtype >= Instance.VanillaHullMaxType)
            {
                InHull = new PLHull(EHullType.E_MAX, level);
                int subtypeformodded = Subtype - Instance.VanillaHullMaxType;
                if (Global.DebugLogging)
                {
                    Logger.Info($"Subtype for modded is {subtypeformodded}");
                }
                if (subtypeformodded <= Instance.HullTypes.Count && subtypeformodded > -1)
                {
                    if (Global.DebugLogging)
                    {
                        Logger.Info("Creating Hull from list info");
                    }
                    HullPlugin HullType = Instance.HullTypes[Subtype - Instance.VanillaHullMaxType];
                    InHull.SubType = Subtype;
                    InHull.Name    = HullType.Name;
                    InHull.Desc    = HullType.Description;
                    InHull.GetType().GetField("m_IconTexture", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(InHull, HullType.IconTexture);
                    InHull.Max     = HullType.HullMax;
                    InHull.Armor   = HullType.Armor;
                    InHull.Defense = HullType.Defense;
                    InHull.GetType().GetField("m_MarketPrice", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(InHull, (ObscuredInt)HullType.MarketPrice);
                    InHull.CargoVisualPrefabID     = HullType.CargoVisualID;
                    InHull.CanBeDroppedOnShipDeath = HullType.CanBeDroppedOnShipDeath;
                    InHull.Experimental            = HullType.Experimental;
                    InHull.Unstable   = HullType.Unstable;
                    InHull.Contraband = HullType.Contraband;
                    InHull.GetType().GetField("Price_LevelMultiplierExponent", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(InHull, (ObscuredFloat)HullType.Price_LevelMultiplierExponent);
                    InHull.Max    *= 2f;
                    InHull.Current = InHull.Max;
                }
            }
            else
            {
                InHull = new PLHull((EHullType)Subtype, level);
            }
            return(InHull);
        }