Beispiel #1
0
        public Alerts(IConfiguration configuration, IMeCache meCache, ILogging logging)
        {
            _logging = logging;

            try
            {
                _synthesizer = new SpeechSynthesizer();
            }
            catch (Exception)
            {
                _logging.LogMessage("Alerts", "Initialize", LogSeverityTypes.Standard,
                                    "Unable to initialize SpeechSynthesizer. Text-to-Speech alerts will not be available.");
                _canSpeak = false;
                _disposed = true;
                return;
            }

            _configuration = configuration;
            _meCache       = meCache;

            //Attach an eventhandler for speakCompleted and set the volume of the synth to max
            _synthesizer.SpeakCompleted += synthesizer_SpeakCompleted;
            _synthesizer.Volume          = 100;

            //Make sure we get disposed
            ModuleManager.ModulesToDispose.Add(this);
        }
Beispiel #2
0
        public AnomalyClaimTracker(ILogging logging, IEventCommunications eventCommunications, IMeCache meCache) : base(logging)
        {
            IsEnabled = true;
            ModuleManager.ModulesToPulse.Add(this);

            ModuleName = "AnomalyClaimTracker";

            _eventCommunications = eventCommunications;
            _meCache             = meCache;

            _eventCommunications.AnomalyClaimedEvent.EventRaised += AnomalyClaimed;
        }
Beispiel #3
0
        public TargetQueue(IMeCache meCache, IEntityProvider entityProvider, IMiningConfiguration miningConfiguration, IMainConfiguration mainConfiguration)
        {
            IsEnabled      = true;
            ModuleName     = "TargetQueue";
            PulseFrequency = 1;
            ModuleManager.ModulesToPulse.Add(this);

            _meCache             = meCache;
            _entityProvider      = entityProvider;
            _miningConfiguration = miningConfiguration;
            _mainConfiguration   = mainConfiguration;
        }
Beispiel #4
0
        internal BookMarkCache(IMeCache meCache, IEntityProvider entityProvider, ILogging logging, IIsxeveProvider isxeveProvider)
            : base(logging)
        {
            _meCache        = meCache;
            _entityProvider = entityProvider;
            _isxeveProvider = isxeveProvider;

            ModuleName     = "BookmarkCache";
            PulseFrequency = 1;
            IsEnabled      = true;
            ModuleManager.ModulesToPulse.Add(this);
        }
Beispiel #5
0
        internal Bookmarks(IMeCache meCache, IStation station, IConfiguration configuration, IBookMarkCache bookMarkCache, IAsteroidBelts asteroidBelts, IIsxeveProvider isxeveProvider)
        {
            _meCache        = meCache;
            _station        = station;
            _configuration  = configuration;
            _bookMarkCache  = bookMarkCache;
            _asteroidBelts  = asteroidBelts;
            _isxeveProvider = isxeveProvider;

            ModuleManager.ModulesToPulse.Add(this);
            ModuleName     = "Bookmarks";
            PulseFrequency = 1;
        }
Beispiel #6
0
 public Safespots(IMeCache meCache, IBookMarkCache bookMarkCache, IMovementConfiguration movementConfiguration, IMeToEntityCache meToEntityCache, IEntityProvider entityProvider, IIsxeveProvider isxeveProvider,
                  IShip ship, ISocial social, MathUtility mathUtility, ILogging logging)
 {
     _meCache               = meCache;
     _bookMarkCache         = bookMarkCache;
     _movementConfiguration = movementConfiguration;
     _meToEntityCache       = meToEntityCache;
     _entityProvider        = entityProvider;
     _isxeveProvider        = isxeveProvider;
     _ship        = ship;
     _social      = social;
     _mathUtility = mathUtility;
     _logging     = logging;
 }
        public ConfigurationManager(IConfiguration configuration, IMeCache meCache)
        {
            _configuration = configuration;
            _meCache       = meCache;

            //This should default to "not cleaned up".
            IsCleanedUpOutOfFrame = false;

            IsEnabled  = false;
            ModuleName = "ConfigurationManager";

            _configurationFilesUpdated = OnConfigurationFilesUpdated;
            StealthBot.EventCommunications.ConfigurationFilesUpdatedEvent.EventRaised += _configurationFilesUpdated;
        }
Beispiel #8
0
        internal AgentCache(IFileManager fileManager, IMeCache meCache, IConfiguration configuration, IEveWindowProvider eveWindowProvider)
        {
            _fileManager       = fileManager;
            _meCache           = meCache;
            _configuration     = configuration;
            _eveWindowProvider = eveWindowProvider;

            ModuleName = "AgentCache";

            _readCallback  = FileReadCallback;
            _writeCallback = FileWriteCallback;

            ModuleManager.ModulesToPulse.Add(this);
        }
Beispiel #9
0
        public BoostOrca(IBookMarkCache bookMarkCache, IMiningConfiguration miningConfiguration, IBookmarks bookmarks, ISafespots safespots, IMovement movement, IMainConfiguration mainConfiguration, IShip ship, IMeCache meCache)
        {
            _bookMarkCache       = bookMarkCache;
            _miningConfiguration = miningConfiguration;
            _bookmarks           = bookmarks;
            _safespots           = safespots;
            _movement            = movement;
            _mainConfiguration   = mainConfiguration;
            _ship    = ship;
            _meCache = meCache;

            IsEnabled = true;
            BehaviorManager.BehaviorsToPulse.Add(BotModes.BoostOrca, this);
            ModuleName = "BoostOrca";
        }
Beispiel #10
0
        public MoveToDropOffLocationPartialBehavior(IMovement movement, IEntityProvider entityProvider, ICargoConfiguration cargoConfiguration, IBookMarkCache bookMarkCache, IBookmarks bookmarks,
                                                    IMovementConfiguration movementConfiguration, IMeCache meCache, MathUtility mathUtility, IIsxeveProvider isxeveProvider)
        {
            _movement              = movement;
            _entityProvider        = entityProvider;
            _cargoConfiguration    = cargoConfiguration;
            _bookMarkCache         = bookMarkCache;
            _bookmarks             = bookmarks;
            _movementConfiguration = movementConfiguration;
            _meCache        = meCache;
            _mathUtility    = mathUtility;
            _isxeveProvider = isxeveProvider;

            ModuleName = "MoveToDropOffLocationPartialBehavior";
        }
Beispiel #11
0
        internal Defense(IIsxeveProvider isxeveProvider, IEntityProvider entityProvider, IShip ship, IMeCache meCache, IDefensiveConfiguration defensiveConfiguration, ISocial social, IDrones drones, IAlerts alerts, ISafespots safespots, IMovement movement)
        {
            _isxeveProvider         = isxeveProvider;
            _entityProvider         = entityProvider;
            _ship                   = ship;
            _meCache                = meCache;
            _defensiveConfiguration = defensiveConfiguration;
            _social                 = social;
            _drones                 = drones;
            _alerts                 = alerts;
            _safespots              = safespots;
            _movement               = movement;

            ModuleManager.ModulesToPulse.Add(this);
            ModuleName     = "Defense";
            PulseFrequency = 1;
        }
Beispiel #12
0
        //Initialize the class
        public Freighter(IEveWindowProvider eveWindowProvider, ICargoConfiguration cargoConfiguration, IMainConfiguration mainConfiguration,
                         IMiningConfiguration miningConfiguration, IMeCache meCache, IShip ship, IStation station, IJettisonContainer jettisonContainer,
                         IEntityProvider entityProvider, IEventCommunications eventCommunications, MoveToDropOffLocationPartialBehavior moveToDropOffLocationPartialBehavior,
                         DropOffCargoPartialBehavior dropOffCargoPartialBehavior, IMovement movement)
        {
            _eveWindowProvider = eveWindowProvider;
            _moveToDropOffLocationPartialBehavior = moveToDropOffLocationPartialBehavior;
            _dropOffCargoPartialBehavior          = dropOffCargoPartialBehavior;
            _movement          = movement;
            _ship              = ship;
            _meCache           = meCache;
            _mainConfiguration = mainConfiguration;

            ModuleName     = "Freighter";
            PulseFrequency = 2;
            BehaviorManager.BehaviorsToPulse.Add(BotModes.Freighting, this);
            IsEnabled = true;
        }
Beispiel #13
0
        public Attackers(IMeCache meCache, IConfiguration configuration, IShip ship, IDrones drones,
                         IEntityProvider entityProvider, IAlerts alerts, IAsteroidBelts asteroidBelts, IPossibleEwarNpcs possibleEwarNpcs,
                         ITargetQueue targetQueue, IModuleManager moduleManager)
        {
            _meCache          = meCache;
            _configuration    = configuration;
            _ship             = ship;
            _drones           = drones;
            _entityProvider   = entityProvider;
            _alerts           = alerts;
            _asteroidBelts    = asteroidBelts;
            _possibleEwarNpcs = possibleEwarNpcs;
            _targetQueue      = targetQueue;
            _moduleManager    = moduleManager;

            ModuleManager.ModulesToPulse.Add(this);
            ModuleName     = "Attackers";
            IsEnabled      = true;
            PulseFrequency = 1;
        }
Beispiel #14
0
        public Targeting(ILogging logging, IMaxRuntimeConfiguration maxRuntimeConfiguration, IMeCache meCache, IShip ship,
                         IDrones drones, IAlerts alerts, IModuleManager moduleManager, ITargetQueue targetQueue, IEntityProvider entityProvider, IMovement movement)
            : base(logging)
        {
            _meCache        = meCache;
            _ship           = ship;
            _drones         = drones;
            _alerts         = alerts;
            _moduleManager  = moduleManager;
            _targetQueue    = targetQueue;
            _entityProvider = entityProvider;
            _movement       = movement;

            ModuleManager.ModulesToPulse.Add(this);
            ModuleName = "Targeting";

            _randomWait = new RandomWaitObject("Targeting", logging, maxRuntimeConfiguration);
            _randomWait.AddWait(new KeyValuePair <int, int>(3, 5), 5);
            _randomWait.AddWait(new KeyValuePair <int, int>(1, 2), 15);
        }
Beispiel #15
0
        public Ratting(ISocial social, IMeCache meCache, IBookmarks bookmarks, ISalvageConfiguration salvageConfiguration, IRattingConfiguration rattingConfiguration, IAnomalyProvider anomalyProvider,
                       IEntityProvider entityProvider, IAnomalyClaimTracker anomalyClaimTracker, ISafespots safespots, IMovement movement, IShip ship, IAsteroidBelts asteroidBelts, IMovementConfiguration movementConfiguration,
                       IAlerts alerts, ITargetQueue targetQueue, IAttackers attackers)
        {
            _social               = social;
            _meCache              = meCache;
            _bookmarks            = bookmarks;
            _salvageConfiguration = salvageConfiguration;
            _rattingConfiguration = rattingConfiguration;
            _anomalyProvider      = anomalyProvider;
            _entityProvider       = entityProvider;
            _anomalyClaimTracker  = anomalyClaimTracker;
            _safespots            = safespots;
            _movement             = movement;
            _ship                  = ship;
            _asteroidBelts         = asteroidBelts;
            _movementConfiguration = movementConfiguration;
            _alerts                = alerts;
            _targetQueue           = targetQueue;
            _attackers             = attackers;

            BehaviorManager.BehaviorsToPulse.Add(BotModes.Ratting, this);
            ModuleName     = "Ratting";
            IsEnabled      = true;
            PulseFrequency = 2;

            var knownEwarPointTargetTags = new List <string> {
                "Dire Guristas", "Arch Angel Hijacker", "Arch Angel Outlaw", "Arch Angel Rogue",
                "Arch Angel Thug", "Sansha's Loyal", "Guardian Agent", "Guardian Initiate",
                "Guardian Scout", "Guardian Spy", " Watchman", " Patroller",
                "Elder Blood Upholder", "Elder Blood Worshipper", "Elder Blood Follower", "Elder Blood Herald",
                "Blood Wraith", "Blood Disciple", "Strain "
            };

            _cachedResourcesByKeys.Add(KnownEwarPointTargetTags, knownEwarPointTargetTags);

            _randomWaitObject = new RandomWaitObject(ModuleName);
            _randomWaitObject.AddWait(new KeyValuePair <int, int>(30, 70), 5);
            _randomWaitObject.AddWait(new KeyValuePair <int, int>(5, 15), 10);
        }
Beispiel #16
0
        public NonOffensive(IMeCache meCache, IMiningConfiguration miningConfiguration, IDefensiveConfiguration defensiveConfiguration, IEntityProvider entityProvider,
                            ITargetQueue targetQueue, IShip ship, IDrones drones, ITargeting targeting, IMovement movement)
        {
            _meCache                = meCache;
            _miningConfiguration    = miningConfiguration;
            _defensiveConfiguration = defensiveConfiguration;
            _entityProvider         = entityProvider;
            _targetQueue            = targetQueue;
            _ship      = ship;
            _drones    = drones;
            _targeting = targeting;
            _movement  = movement;

            ModuleManager.ModulesToPulse.Add(this);
            PulseFrequency = 1;
            ModuleName     = "NonOffensive";

            _randomWait.AddWait(new KeyValuePair <int, int>(16, 30), 1);
            _randomWait.AddWait(new KeyValuePair <int, int>(6, 15), 3);
            _randomWait.AddWait(new KeyValuePair <int, int>(3, 5), 6);
            _randomWait.AddWait(new KeyValuePair <int, int>(1, 2), 10);
        }
Beispiel #17
0
        public DropOffCargoPartialBehavior(IEveWindowProvider eveWindowProvider, ICargoConfiguration cargoConfiguration, IMainConfiguration mainConfiguration,
                                           IMiningConfiguration miningConfiguration, IMeCache meCache, IShip ship, IStation station, IJettisonContainer jettisonContainer,
                                           IEntityProvider entityProvider, IEventCommunications eventCommunications)
        {
            _eveWindowProvider   = eveWindowProvider;
            _cargoConfiguration  = cargoConfiguration;
            _mainConfiguration   = mainConfiguration;
            _miningConfiguration = miningConfiguration;
            _meCache             = meCache;
            _ship                = ship;
            _station             = station;
            _jettisonContainer   = jettisonContainer;
            _entityProvider      = entityProvider;
            _eventCommunications = eventCommunications;

            ModuleName = "DropOffCargoPartialBehavior";

            _doDropoffRandomWait = new RandomWaitObject(ModuleName);
            _doDropoffRandomWait.AddWait(new KeyValuePair <int, int>(601, 1800), 1.5);
            _doDropoffRandomWait.AddWait(new KeyValuePair <int, int>(121, 600), 6.67);
            _doDropoffRandomWait.AddWait(new KeyValuePair <int, int>(11, 120), 15);
            _doDropoffRandomWait.AddWait(new KeyValuePair <int, int>(6, 10), 30);
            _doDropoffRandomWait.AddWait(new KeyValuePair <int, int>(1, 5), 66.67);
        }
Beispiel #18
0
        public override bool Initialize()
        {
            IsCleanedUpOutOfFrame = false;

            _isxeveProvider    = new IsxeveProvider();
            _eveWindowProvider = new EveWindowProvider();

            #region Core object construction
            //Background stuff
            Logging     = new Logging();
            LogCallback = LogIsxeveMessage;
            Tracing.AddCallback(LogCallback);

            _mathUtility        = new MathUtility();
            Statistics          = new Statistics();
            EventCommunications = new EventCommunications(Logging);
            FileManager         = new FileManager();

            //moduleManager and BehaviorManager
            ModuleManager = new ModuleManager(_isxeveProvider, _eveWindowProvider);

            //Me cache. Contains the other caches.
            MeCache = new MeCache(_isxeveProvider, _eveWindowProvider);

            //ConfigurationManager
            Config = new Configuration();
            ConfigurationManager = new ConfigurationManager(Config, MeCache);

            Ship = new Ship(_isxeveProvider, _eveWindowProvider, MeCache, MeCache.Ship, Config.CargoConfig, Statistics, Config.MovementConfig);

            //Entity Populator object
            EntityProvider = new EntityProvider(_isxeveProvider);

            //Other Cache and Data classes
            MissionCache = new MissionCache(_isxeveProvider, _eveWindowProvider);
            AgentCache   = new AgentCache(FileManager, MeCache, Config, _eveWindowProvider);

            BookMarkCache  = new BookMarkCache(MeCache, EntityProvider, Logging, _isxeveProvider);
            NpcBountyCache = new NpcBountyCache();
            //EVEDB modules
            PilotCache       = new PilotCache();
            AllianceCache    = new AllianceCache(FileManager);
            CorporationCache = new CorporationCache();
            MissionDatabase  = new MissionDatabase();
            PossibleEwarNpcs = new PossibleEwarNpcs();

            //Core Functionality Providers, not necessarily caches
            TargetQueue          = new TargetQueue(MeCache, EntityProvider, Config.MiningConfig, Config.MainConfig);
            JetCan               = new JettisonContainer(_eveWindowProvider);
            Social               = new Social(_isxeveProvider);
            Station              = new Station(_isxeveProvider, _eveWindowProvider);
            AsteroidBelts        = new AsteroidBelts(Config, MeCache, EntityProvider, BookMarkCache, Ship);
            Bookmarks            = new Bookmarks(MeCache, Station, Config, BookMarkCache, AsteroidBelts, _isxeveProvider);
            Drones               = new Drones(_isxeveProvider);
            Fleet                = new Fleet();
            Alerts               = new Alerts(Config, MeCache, Logging);
            _anomalyProvider     = new AnomalyProvider(MeCache.Ship);
            _anomalyClaimTracker = new AnomalyClaimTracker(Logging, EventCommunications, MeCache);
            _safespots           = new Safespots(MeCache, BookMarkCache, Config.MovementConfig, MeCache.ToEntity, EntityProvider, _isxeveProvider, Ship, Social, _mathUtility, Logging);

            Attackers = new Attackers(MeCache, Config, Ship, Drones, EntityProvider, Alerts, AsteroidBelts, PossibleEwarNpcs, TargetQueue, ModuleManager);
            #endregion

            #region ActionModule construction
            //Action classes
            Movement     = new Movement(_isxeveProvider, EntityProvider, MeCache, _anomalyProvider, TargetQueue, Ship, Drones);
            Targeting    = new Targeting(Logging, Config.MaxRuntimeConfig, MeCache, Ship, Drones, Alerts, ModuleManager, TargetQueue, EntityProvider, Movement);
            Offensive    = new Offensive(Logging, TargetQueue, EntityProvider);
            NonOffensive = new NonOffensive(MeCache, Config.MiningConfig, Config.DefenseConfig, EntityProvider, TargetQueue, Ship, Drones, Targeting, Movement);
            Defense      = new Defense(_isxeveProvider, EntityProvider, Ship, MeCache, Config.DefenseConfig, Social, Drones, Alerts, _safespots, Movement);
            #endregion

            #region Processor construction
            MissionProcessor = new MissionProcessor(_eveWindowProvider, Movement);
            #endregion

            #region BehaviorModule construction
            _moveToDropOffLocationPartialBehavior = new MoveToDropOffLocationPartialBehavior(Movement, EntityProvider, Config.CargoConfig, BookMarkCache, Bookmarks,
                                                                                             Config.MovementConfig, MeCache, _mathUtility, _isxeveProvider);
            _dropOffCargoPartialBehavior = new DropOffCargoPartialBehavior(_eveWindowProvider, Config.CargoConfig, Config.MainConfig, Config.MiningConfig,
                                                                           MeCache, Ship, Station, JetCan, EntityProvider, EventCommunications);

            //Behavior classes
            BehaviorManager = new BehaviorManager();
            Mining          = new Mining(Config.CargoConfig, Config.MainConfig, MeCache, Ship, EntityProvider,
                                         _safespots, Movement, Social, Config.MovementConfig, AsteroidBelts, _moveToDropOffLocationPartialBehavior, _dropOffCargoPartialBehavior, Config.MiningConfig,
                                         _isxeveProvider, BookMarkCache, TargetQueue);
            Hauler = new Hauler(_eveWindowProvider, Config.CargoConfig, Config.MainConfig, Config.MiningConfig, MeCache, Ship, Station, JetCan, EntityProvider, EventCommunications,
                                _safespots, Movement, BookMarkCache, _moveToDropOffLocationPartialBehavior);
            BoostCanOrca = new BoostCanOrca();
            BoostOrca    = new BoostOrca(BookMarkCache, Config.MiningConfig, Bookmarks, _safespots, Movement, Config.MainConfig, Ship, MeCache);
            Freighter    = new Freighter(_eveWindowProvider, Config.CargoConfig, Config.MainConfig,
                                         Config.MiningConfig, MeCache, Ship, Station, JetCan, EntityProvider, EventCommunications, _moveToDropOffLocationPartialBehavior, _dropOffCargoPartialBehavior, Movement);
            MissionRunner     = new MissionRunner(Config, MissionCache, AgentCache, _eveWindowProvider);
            JumpStabilityTest = new JumpStabilityTest();
            Ratting           = new Ratting(Social, MeCache, Bookmarks, Config.SalvageConfig, Config.RattingConfig, _anomalyProvider, EntityProvider, _anomalyClaimTracker, _safespots,
                                            Movement, Ship, AsteroidBelts, Config.MovementConfig, Alerts, TargetQueue, Attackers);
            #endregion

            //StealthBotUI Interop construction
            //SbUiCommunication = new SbUiCommunication();

#if DEBUG
            LavishScript.ExecuteCommand("ISXEVE:Debug_SetHighPerfLogging[1]");
#endif

            return(true);
        }
Beispiel #19
0
        internal AsteroidBelts(IConfiguration configuration, IMeCache meCache, IEntityProvider entityProvider, IBookMarkCache bookMarkCache, IShip ship)
        {
            _configuration  = configuration;
            _meCache        = meCache;
            _entityProvider = entityProvider;
            _bookMarkCache  = bookMarkCache;
            _ship           = ship;

            PulseFrequency = 1;
            ModuleManager.ModulesToPulse.Add(this);
            ModuleName = "AsteroidBelts";

            _asteroidTypeIdsByType.Add("Veldspar", (int)TypeIDs.Veldspar);
            _asteroidTypeIdsByType.Add("Concentrated Veldspar", (int)TypeIDs.Concentrated_Veldspar);
            _asteroidTypeIdsByType.Add("Dense Veldspar", (int)TypeIDs.Dense_Veldspar);
            _asteroidTypeIdsByType.Add("Scordite", (int)TypeIDs.Scordite);
            _asteroidTypeIdsByType.Add("Condensed Scordite", (int)TypeIDs.Condensed_Scordite);
            _asteroidTypeIdsByType.Add("Massive Scordite", (int)TypeIDs.Massive_Scordite);
            _asteroidTypeIdsByType.Add("Pyroxeres", (int)TypeIDs.Pyroxeres);
            _asteroidTypeIdsByType.Add("Solid Pyroxeres", (int)TypeIDs.Solid_Pyroxeres);
            _asteroidTypeIdsByType.Add("Viscous Pyroxeres", (int)TypeIDs.Viscous_Pyroxeres);
            _asteroidTypeIdsByType.Add("Plagioclase", (int)TypeIDs.Plagioclase);
            _asteroidTypeIdsByType.Add("Azure Plagioclase", (int)TypeIDs.Azure_Plagioclase);
            _asteroidTypeIdsByType.Add("Rich Plagioclase", (int)TypeIDs.Rich_Plagioclase);
            _asteroidTypeIdsByType.Add("Omber", (int)TypeIDs.Omber);
            _asteroidTypeIdsByType.Add("Silvery Omber", (int)TypeIDs.Silvery_Omber);
            _asteroidTypeIdsByType.Add("Golden Omber", (int)TypeIDs.Golden_Omber);
            _asteroidTypeIdsByType.Add("Kernite", (int)TypeIDs.Kernite);
            _asteroidTypeIdsByType.Add("Luminous Kernite", (int)TypeIDs.Luminous_Kernite);
            _asteroidTypeIdsByType.Add("Fiery Kernite", (int)TypeIDs.Fiery_Kernite);
            _asteroidTypeIdsByType.Add("Jaspet", (int)TypeIDs.Jaspet);
            _asteroidTypeIdsByType.Add("Pure Jaspet", (int)TypeIDs.Pure_Jaspet);
            _asteroidTypeIdsByType.Add("Pristine Jaspet", (int)TypeIDs.Pristine_Jaspet);
            _asteroidTypeIdsByType.Add("Hemorphite", (int)TypeIDs.Hemorphite);
            _asteroidTypeIdsByType.Add("Vivid Hemorphite", (int)TypeIDs.Vivid_Hemorphite);
            _asteroidTypeIdsByType.Add("Radiant Hemorphite", (int)TypeIDs.Radiant_Hemorphite);
            _asteroidTypeIdsByType.Add("Hedbergite", (int)TypeIDs.Hedbergite);
            _asteroidTypeIdsByType.Add("Vitric Hedbergite", (int)TypeIDs.Vitric_Hedbergite);
            _asteroidTypeIdsByType.Add("Glazed Hedbergite", (int)TypeIDs.Glazed_Hedbergite);
            _asteroidTypeIdsByType.Add("Gneiss", (int)TypeIDs.Gneiss);
            _asteroidTypeIdsByType.Add("Iridescent Gneiss", (int)TypeIDs.Iridescent_Gneiss);
            _asteroidTypeIdsByType.Add("Prismatic Gneiss", (int)TypeIDs.Prismatic_Gneiss);
            _asteroidTypeIdsByType.Add("Dark Ochre", (int)TypeIDs.Dark_Ochre);
            _asteroidTypeIdsByType.Add("Onyx Ochre", (int)TypeIDs.Onyx_Ochre);
            _asteroidTypeIdsByType.Add("Obsidian Ochre", (int)TypeIDs.Obsidian_Ochre);
            _asteroidTypeIdsByType.Add("Crokite", (int)TypeIDs.Crokite);
            _asteroidTypeIdsByType.Add("Sharp Crokite", (int)TypeIDs.Sharp_Crokite);
            _asteroidTypeIdsByType.Add("Crystalline Crokite", (int)TypeIDs.Crystalline_Crokite);
            _asteroidTypeIdsByType.Add("Spodumain", (int)TypeIDs.Spodumain);
            _asteroidTypeIdsByType.Add("Bright Spodumain", (int)TypeIDs.Bright_Spodumain);
            _asteroidTypeIdsByType.Add("Gleaming Spodumain", (int)TypeIDs.Gleaming_Spodumain);
            _asteroidTypeIdsByType.Add("Bistot", (int)TypeIDs.Bistot);
            _asteroidTypeIdsByType.Add("Triclinic Bistot", (int)TypeIDs.Triclinic_Bistot);
            _asteroidTypeIdsByType.Add("Monoclinic Bistot", (int)TypeIDs.Monoclinic_Bistot);
            _asteroidTypeIdsByType.Add("Arkonor", (int)TypeIDs.Arkonor);
            _asteroidTypeIdsByType.Add("Crimson Arkonor", (int)TypeIDs.Crimson_Arkonor);
            _asteroidTypeIdsByType.Add("Prime Arkonor", (int)TypeIDs.Prime_Arkonor);
            _asteroidTypeIdsByType.Add("Mercoxit", (int)TypeIDs.Mercoxit);
            _asteroidTypeIdsByType.Add("Magma Mercoxit", (int)TypeIDs.Magma_Mercoxit);
            _asteroidTypeIdsByType.Add("Vitreous Mercoxit", (int)TypeIDs.Vitreous_Mercoxit);
            _asteroidTypeIdsByType.Add("Banidine", (int)TypeIDs.Banidine);
            _asteroidTypeIdsByType.Add("Augumene", (int)TypeIDs.Augumene);
            _asteroidTypeIdsByType.Add("Mercium", (int)TypeIDs.Mercium);
            _asteroidTypeIdsByType.Add("Lyavite", (int)TypeIDs.Lyavite);
            _asteroidTypeIdsByType.Add("Pithix", (int)TypeIDs.Pithix);
            _asteroidTypeIdsByType.Add("Green Arisite", (int)TypeIDs.Green_Arisite);
            _asteroidTypeIdsByType.Add("Oeryl", (int)TypeIDs.Oeryl);
            _asteroidTypeIdsByType.Add("Geodite", (int)TypeIDs.Geodite);
            _asteroidTypeIdsByType.Add("Polygypsum", (int)TypeIDs.Polygypsum);
            _asteroidTypeIdsByType.Add("Zuthrine", (int)TypeIDs.Zuthrine);
            //Ices
            _asteroidTypeIdsByType.Add("Krystallos", (int)TypeIDs.Krystallos);
            _asteroidTypeIdsByType.Add("Gelidus", (int)TypeIDs.Gelidus);
            _asteroidTypeIdsByType.Add("Dark Glitter", (int)TypeIDs.Dark_Glitter);
            _asteroidTypeIdsByType.Add("Glare Crust", (int)TypeIDs.Glare_Crust);
            _asteroidTypeIdsByType.Add("Enriched Clear Icicle", (int)TypeIDs.Enriched_Clear_Icicle);
            _asteroidTypeIdsByType.Add("Clear Icicle", (int)TypeIDs.Clear_Icicle);
            _asteroidTypeIdsByType.Add("Thick Blue Ice", (int)TypeIDs.Thick_Blue_Ice);
            _asteroidTypeIdsByType.Add("Blue Ice", (int)TypeIDs.Blue_Ice);
            _asteroidTypeIdsByType.Add("Smooth Glacial Mass", (int)TypeIDs.Smooth_Glacial_Mass);
            _asteroidTypeIdsByType.Add("Glacial Mass", (int)TypeIDs.Glacial_Mass);
            _asteroidTypeIdsByType.Add("Pristine White Glaze", (int)TypeIDs.Pristine_White_Glaze);
            _asteroidTypeIdsByType.Add("White Glaze", (int)TypeIDs.White_Glaze);
            _asteroidTypeIdsByType.Add("Azure Ice", (int)TypeIDs.Azure_Ice);
            _asteroidTypeIdsByType.Add("Crystalline Icicle", (int)TypeIDs.Crystalline_Icicle);

            _asteroidGroupIdsByGroup.Add("Veldspar", (int)GroupIDs.Veldspar);
            _asteroidGroupIdsByGroup.Add("Scordite", (int)GroupIDs.Scordite);
            _asteroidGroupIdsByGroup.Add("Pyroxeres", (int)GroupIDs.Pyroxeres);
            _asteroidGroupIdsByGroup.Add("Plagioclase", (int)GroupIDs.Plagioclase);
            _asteroidGroupIdsByGroup.Add("Kernite", (int)GroupIDs.Kernite);
            _asteroidGroupIdsByGroup.Add("Omber", (int)GroupIDs.Omber);
            _asteroidGroupIdsByGroup.Add("Hedbergite", (int)GroupIDs.Hedbergite);
            _asteroidGroupIdsByGroup.Add("Hemorphite", (int)GroupIDs.Hemorphite);
            _asteroidGroupIdsByGroup.Add("Jaspet", (int)GroupIDs.Jaspet);
            _asteroidGroupIdsByGroup.Add("Gneiss", (int)GroupIDs.Gneiss);
            _asteroidGroupIdsByGroup.Add("Ochre", (int)GroupIDs.Dark_Ochre);
            _asteroidGroupIdsByGroup.Add("Spodumain", (int)GroupIDs.Spodumain);
            _asteroidGroupIdsByGroup.Add("Crokite", (int)GroupIDs.Crokite);
            _asteroidGroupIdsByGroup.Add("Bistot", (int)GroupIDs.Bistot);
            _asteroidGroupIdsByGroup.Add("Arkonor", (int)GroupIDs.Arkonor);
            _asteroidGroupIdsByGroup.Add("Mercoxit", (int)GroupIDs.Mercoxit);

            foreach (var asteroidType in _asteroidTypeIdsByType.Keys.ToList())
            {
                _asteroidTypesByTypeId.Add(_asteroidTypeIdsByType[asteroidType], asteroidType);
            }

            foreach (var asteroidGroup in _asteroidGroupIdsByGroup.Keys.ToList())
            {
                _asteroidGroupsByGroupId.Add(_asteroidGroupIdsByGroup[asteroidGroup], asteroidGroup);
            }
        }