public MyBarthsMoonTransmitterMission()
            : base(
            MyMissionID.BARTHS_MOON_TRANSMITTER,
            new StringBuilder("06-Barth's moon transmitter"),
            MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER,
            MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_Description,
            new MyMissionID[] { MyMissionID.RUSSIAN_WAREHOUSE },
            new EntityID[] { },
            EntityID.PlayerStartLocationTransmitter)
        {
            m_objectives = new List<MyObjective>();
            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.BARTHS_MOON_TRANSMITTER_RETURN_BACK_TO_MADELYN };
            RequiredActors = new MyActorEnum[] { MyActorEnum.MARCUS, MyActorEnum.MADELYN };
            RequiredMissions = new MyMissionID[] { MyMissionID.RUSSIAN_WAREHOUSE };

            Components.Add(new MySpawnpointWaves((uint)EntityID.EnterMainLabDetector, 0,
                new List<uint[]> { new List<uint> { (uint)EntityID.SpawnPoint3 }.ToArray(), new List<uint> { (uint)EntityID.SpawnPoint4 }.ToArray() }));

            #region Objectives
            var meetThomasBarth = new MyObjective(
                    (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_MEET_BARTH_Name),
                    MyMissionID.BARTHS_MOON_TRANSMITTER_MEET_BARTH,
                    (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_MEET_BARTH_Description),
                    null,
                    this,
                    new MyMissionID[] { },
                    new MyMissionLocation(baseSector, (uint)EntityID.ThomasBartId),
                    radiusOverride: 50
                    ) { SaveOnSuccess = false, StartDialogId = MyDialogueEnum.BARTHS_MOON_TRANSMITTER_0100_INTRO, HudName = MyTextsWrapperEnum.HudBarth };
            meetThomasBarth.OnMissionLoaded += MeetThomasBarthOnLoaded;
            m_objectives.Add(meetThomasBarth);


            m_talkWithThomasBarth = new MyBarthsMoonSubmissionTalkWithThomasBarth(
                (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_TALK_TO_BARTH_Name),
                MyMissionID.BARTHS_MOON_TRANSMITTER_TALK_TO_BARTH,
                (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_TALK_TO_BARTH_Description),
                this,
                new MyMissionID[] { MyMissionID.BARTHS_MOON_TRANSMITTER_MEET_BARTH },
                null,
                true
                ) { SaveOnSuccess = true, SuccessDialogId = MyDialogueEnum.BARTHS_MOON_TRANSMITTER_0300 };
            m_objectives.Add(m_talkWithThomasBarth);


            //02
            m_findWayToMoon = new MyObjective(
                 (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_FIND_WAY_TO_MOON_Name),
                 MyMissionID.BARTHS_MOON_TRANSMITTER_FIND_WAY_TO_MOON,
                 (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_FIND_WAY_TO_MOON_Description),
                 null,
                 this,
                 new MyMissionID[] { MyMissionID.BARTHS_MOON_TRANSMITTER_TALK_TO_BARTH },
                 new MyMissionLocation(baseSector, (uint)EntityID.BrokenMoonDummy),
                 null,
                 null,
                 MyDialogueEnum.BARTHS_MOON_TRANSMITTER_0400
                 ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudBrokenMoon };
            m_objectives.Add(m_findWayToMoon);

            //03
            var destroyLaboratories = new MyObjectiveDestroy(
                (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_DESTROY_LAB_Name),
                MyMissionID.BARTHS_MOON_TRANSMITTER_DESTROY_LAB,
                (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_DESTROY_LAB_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.BARTHS_MOON_TRANSMITTER_FIND_WAY_TO_MOON },
                new List<uint> { },         // entities needed to kill
                new List<uint> { },  // spawnpoint from which bots must be killed
                true,
                false // dont count 
                ) { SaveOnSuccess = true };
            destroyLaboratories.OnMissionLoaded += destroyLaboratories_OnMissionLoaded;
            destroyLaboratories.Components.Add(new MyDetectorDialogue((uint)EntityID.Dialog5DetectorId, MyDialogueEnum.BARTHS_MOON_TRANSMITTER_0500));
            destroyLaboratories.Components.Add(new MyDetectorDialogue((uint)EntityID.Dialog6DetectorId, MyDialogueEnum.BARTHS_MOON_TRANSMITTER_0600));
            m_objectives.Add(destroyLaboratories);

            //04


            var enableGenerator = new MyUseObjective(
                       (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_ENABLE_GENERATOR_Name),
                   MyMissionID.BARTHS_MOON_TRANSMITTER_ENABLE_GENERATOR,
                   (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_ENABLE_GENERATOR_Description),
                   null,
                   this,
                   new MyMissionID[] { MyMissionID.BARTHS_MOON_TRANSMITTER_DESTROY_LAB },
                   new MyMissionLocation(baseSector, (uint)EntityID.SecurityHubDummy),
                   MyTextsWrapperEnum.PressToStartGenerator,
                   MyTextsWrapperEnum.Generator,
                   MyTextsWrapperEnum.StartingProgress,
                   5000,
                   MyUseObjectiveType.Activating
                   ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudGenerator, ShowNavigationMark = true };
            enableGenerator.OnMissionSuccess += EnableGeneratorOnOnMissionSuccess;
            m_objectives.Add(enableGenerator);
            


            //05
            m_lookBothHubs = new MyObjective(
                (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_LOOK_HUBS_Name),
                MyMissionID.BARTHS_MOON_TRANSMITTER_LOOK_HUBS,
                (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_LOOK_HUBS_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.BARTHS_MOON_TRANSMITTER_ENABLE_GENERATOR },
                null,
                new List<uint> { (uint)EntityID.SecurityHubLook1 },
                null
                ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudHub, MarkMissionEntities = true };
            m_objectives.Add(m_lookBothHubs);


            //06
            var getItemsFromCargoBoxes = new MyObjectiveGetItems(
                    (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_GET_ITEMS_Name),
                    MyMissionID.BARTHS_MOON_TRANSMITTER_GET_ITEMS,
                    (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_GET_ITEMS_Description),
                    null,
                    this,
                    new MyMissionID[] { MyMissionID.BARTHS_MOON_TRANSMITTER_LOOK_HUBS },
                    new List<MyItemToGetDefinition>() { new MyItemToGetDefinition(MyMwcObjectBuilderTypeEnum.Drone, (int)MyMwcObjectBuilder_Drone_TypesEnum.DroneUS),
                    new MyItemToGetDefinition(MyMwcObjectBuilderTypeEnum.SmallShip_HackingTool, (int)MyMwcObjectBuilder_SmallShip_HackingTool_TypesEnum.Level_3)},
                    new List<uint>() { (uint)EntityID.Cargobox1, (uint)EntityID.Cargobox2 }
                    ) { SaveOnSuccess = true, StartDialogId = MyDialogueEnum.BARTHS_MOON_TRANSMITTER_0700, MarkMissionEntities = true };
            m_objectives.Add(getItemsFromCargoBoxes);




            var findFans = new MyObjective(
                 (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_FAN_Name),
                 MyMissionID.BARTHS_MOON_TRANSMITTER_FAN,
                 (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_FAN_Description),
                 null,
                 this,
                 new MyMissionID[] { MyMissionID.BARTHS_MOON_TRANSMITTER_GET_ITEMS },
                 new MyMissionLocation(baseSector, (uint)EntityID.FanDummy)
                 ) { SaveOnSuccess = true, StartDialogId = MyDialogueEnum.BARTHS_MOON_TRANSMITTER_0800, HudName = MyTextsWrapperEnum.HudEntrance };
            m_objectives.Add(findFans);


            m_learnToUseDrones = new MyObjective(
                     (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_DRONES_Name),
                     MyMissionID.BARTHS_MOON_TRANSMITTER_DRONES,
                     (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_DRONES_Description),
                     null,
                     this,
                     new MyMissionID[] { MyMissionID.BARTHS_MOON_TRANSMITTER_FAN },
                     null
                     ) { SaveOnSuccess = true, StartDialogId = MyDialogueEnum.BARTHS_MOON_TRANSMITTER_0900 };
            m_objectives.Add(m_learnToUseDrones);

            m_learnToUseDrones.OnMissionLoaded += LearnDronesOnOnMissionLoaded;
            m_learnToUseDrones.OnMissionSuccess += LearnDronesOnOnMissionSuccess;



            //07
            m_enableGeneratorWithDrone1Mission = new MyUseObjective(
                (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_ENABLE_GENERATOR_DRONE1_Name),
                MyMissionID.BARTHS_MOON_TRANSMITTER_ENABLE_GENERATOR_DRONE1,
                (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_ENABLE_GENERATOR_DRONE1_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.BARTHS_MOON_TRANSMITTER_DRONES },
                new MyMissionLocation(baseSector, (uint)EntityID.DroneGeneratroHub1),
                MyTextsWrapperEnum.PressToStartGenerator,
                MyTextsWrapperEnum.Generator,
                MyTextsWrapperEnum.StartingProgress,
                5000,
                radiusOverride: 50
                ) { SaveOnSuccess = true, SuccessDialogId = MyDialogueEnum.BARTHS_MOON_TRANSMITTER_1100, HudName = MyTextsWrapperEnum.HudHub };

            m_enableGeneratorWithDrone1Mission.RequiresDrone = true;
            m_enableGeneratorWithDrone1Mission.OnMissionSuccess += EnableGeneratorWithDrone1OnOnMissionSuccess;
            m_enableGeneratorWithDrone1Mission.OnMissionLoaded += EnsureDronesInShip;
            m_enableGeneratorWithDrone1Mission.Components.Add(new MyDetectorDialogue((uint)EntityID.Dialog10DetectorId, MyDialogueEnum.BARTHS_MOON_TRANSMITTER_1000));
            m_objectives.Add(m_enableGeneratorWithDrone1Mission);

            m_enableGeneratorWithDrone2Mission = new MyUseObjective(
                       (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_ENABLE_GENERATOR_DRONE2_Name),
                       MyMissionID.BARTHS_MOON_TRANSMITTER_ENABLE_GENERATOR_DRONE2,
                       (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_ENABLE_GENERATOR_DRONE2_Description),
                       null,
                       this,
                       new MyMissionID[] { MyMissionID.BARTHS_MOON_TRANSMITTER_ENABLE_GENERATOR_DRONE1 },
                       new MyMissionLocation(baseSector, (uint)EntityID.DroneGeneratroHub2),
                       MyTextsWrapperEnum.PressToStartGenerator,
                       MyTextsWrapperEnum.Generator,
                       MyTextsWrapperEnum.StartingProgress,
                       5000,
                       radiusOverride: 50
                       ) { SaveOnSuccess = true, StartDialogId = MyDialogueEnum.BARTHS_MOON_TRANSMITTER_1200, SuccessDialogId = MyDialogueEnum.BARTHS_MOON_TRANSMITTER_1400, RequiresDrone = true, HudName = MyTextsWrapperEnum.HudHub };
            m_enableGeneratorWithDrone2Mission.OnMissionSuccess += EnableGeneratorWithDrone2OnOnMissionSuccess;
            m_enableGeneratorWithDrone2Mission.OnMissionLoaded += EnsureDronesInShip;
            m_enableGeneratorWithDrone2Mission.Components.Add(new MyDetectorDialogue((uint)EntityID.Dialog13DetectorId, MyDialogueEnum.BARTHS_MOON_TRANSMITTER_1300));
            m_objectives.Add(m_enableGeneratorWithDrone2Mission);

            //05
            m_lookBothHubs2 = new MyObjective(
                (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_LOOK_HUBS2_Name),
                MyMissionID.BARTHS_MOON_TRANSMITTER_LOOK_HUBS2,
                (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_LOOK_HUBS2_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.BARTHS_MOON_TRANSMITTER_ENABLE_GENERATOR_DRONE2 },
                null,
                new List<uint> { (uint)EntityID.SecurityHubLook2 }
                ) { SaveOnSuccess = true, SuccessDialogId = MyDialogueEnum.BARTHS_MOON_TRANSMITTER_1500, HudName = MyTextsWrapperEnum.HudHub, ShowNavigationMark = true };
            m_objectives.Add(m_lookBothHubs2);

            //08


            var downloadData1 = new MyUseObjective(
                (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA1_Name),
                MyMissionID.BARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA1,
                (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA1_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.BARTHS_MOON_TRANSMITTER_LOOK_HUBS2 },
                new MyMissionLocation(baseSector, (uint)EntityID.Hub1Dummy),
                MyTextsWrapperEnum.PressToDownloadData,
                MyTextsWrapperEnum.Console,
                MyTextsWrapperEnum.DownloadingData,
                3000,
                MyUseObjectiveType.Activating,
                null) { HudName = MyTextsWrapperEnum.HudHub };
            downloadData1.Components.Add(new MyDetectorDialogue((uint)EntityID.Dialog17DetectorId, MyDialogueEnum.BARTHS_MOON_TRANSMITTER_1700));
            m_objectives.Add(downloadData1);

            var downloadData2 = new MyUseObjective(
                    (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA2_Name),
                    MyMissionID.BARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA2,
                    (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA2_Description),
                    null,
                    this,
                    new MyMissionID[] { MyMissionID.BARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA1 },
                    new MyMissionLocation(baseSector, (uint)EntityID.Hub2Dummy),
                    MyTextsWrapperEnum.PressToDownloadData,
                    MyTextsWrapperEnum.Console,
                    MyTextsWrapperEnum.DownloadingData,
                    3000,
                    MyUseObjectiveType.Hacking,
                    null) { SuccessDialogId = MyDialogueEnum.BARTHS_MOON_TRANSMITTER_1800, HudName = MyTextsWrapperEnum.HudHub };
            m_objectives.Add(downloadData2);

            var downloadData3 = new MyUseObjective(
                    (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA3_Name),
                    MyMissionID.BARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA3,
                    (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA3_Description),
                    null,
                    this,
                    new MyMissionID[] { MyMissionID.BARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA2 },
                    new MyMissionLocation(baseSector, (uint)EntityID.Hub3Dummy),
                    MyTextsWrapperEnum.PressToDownloadData,
                    MyTextsWrapperEnum.Console,
                    MyTextsWrapperEnum.DownloadingData,
                    3000,
                    MyUseObjectiveType.Hacking,
                    null) { SuccessDialogId = MyDialogueEnum.BARTHS_MOON_TRANSMITTER_2000, HudName = MyTextsWrapperEnum.HudHub };
            downloadData3.RequiresDrone = true;
            downloadData3.OnMissionLoaded += DownloadData3OnOnMissionLoaded;
            downloadData3.OnMissionSuccess += DownloadData3OnOnMissionSuccess;
            downloadData3.Components.Add(new MyDetectorDialogue((uint)EntityID.Dialog19DetectorId, MyDialogueEnum.BARTHS_MOON_TRANSMITTER_1900));
            m_objectives.Add(downloadData3);

            var downloadData4 = new MyUseObjective(
                    (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA4_Name),
                    MyMissionID.BARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA4,
                    (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA4_Description),
                    null,
                    this,
                    new MyMissionID[] { MyMissionID.BARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA3 },
                    new MyMissionLocation(baseSector, (uint)EntityID.Hub4Dummy),
                    MyTextsWrapperEnum.PressToDownloadData,
                    MyTextsWrapperEnum.Console,
                    MyTextsWrapperEnum.DownloadingData,
                    3000) { HudName = MyTextsWrapperEnum.HudHub };
            downloadData4.OnMissionLoaded += EnsureDronesInShip;
            m_objectives.Add(downloadData4);

            var entermainLab = new MyObjective(
                (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_ENTER_MAINLAB_Name),
                MyMissionID.BARTHS_MOON_TRANSMITTER_ENTER_MAINLAB,
                (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_ENTER_MAINLAB_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.BARTHS_MOON_TRANSMITTER_DOWNLOAD_DATA4 },
                new MyMissionLocation(baseSector, (uint)EntityID.EnterMainLabDummy)
                ) { SaveOnSuccess = true, StartDialogId = MyDialogueEnum.BARTHS_MOON_TRANSMITTER_2100, HudName = MyTextsWrapperEnum.HudLab };
            entermainLab.OnMissionSuccess += EntermainLabOnOnMissionSuccess;
            m_objectives.Add(entermainLab);


            //10
            m_destroyComputer = new MyObjectiveDestroy(
               (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_DESTROY_COMPUTER_Name),
               MyMissionID.BARTHS_MOON_TRANSMITTER_DESTROY_COMPUTER,
               (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_DESTROY_COMPUTER_Description),
               null,
               this,
               new MyMissionID[] { MyMissionID.BARTHS_MOON_TRANSMITTER_ENTER_MAINLAB },
               new List<uint> { (uint)EntityID.DestroyComputer },         // entities needed to kill
               new List<uint> { },  // spawnpoint from which bots must be killed
               true,
               false // dont count 
               ) { SaveOnSuccess = false, StartDialogId = MyDialogueEnum.BARTHS_MOON_TRANSMITTER_2200/*, SuccessDialogId = MyDialogueEnum.BARTHS_MOON_TRANSMITTER_2400*/, HudName = MyTextsWrapperEnum.HudBlondi };
            m_destroyComputer.OnMissionSuccess += DestroyComputerOnOnMissionSuccess;
            m_destroyComputer.OnMissionLoaded += DestroyComputerOnOnMissionLoaded;
            m_destroyComputer.Components.Add(new MySpawnpointWaves((uint)EntityID.EnterMainLabDummy, 0,
                new List<uint[]>
                    {
                        new List<uint> { (uint)EntityID.SpawnPoint5, (uint)EntityID.SpawnPoint6 }.ToArray(), 
                        new List<uint> { (uint)EntityID.SpawnPoint7, (uint)EntityID.SpawnPoint8 }.ToArray()
                    }));
            m_objectives.Add(m_destroyComputer);


            m_needPart3 = new MyMultipleUseObjective(
                (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_FIND_PART3_Name),
                MyMissionID.BARTHS_MOON_TRANSMITTER_FIND_PART3,
                (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_FIND_PART3_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.BARTHS_MOON_TRANSMITTER_DESTROY_COMPUTER },
                MyTextsWrapperEnum.PressToTakeComponent,
                MyTextsWrapperEnum.Component,
                MyTextsWrapperEnum.TakingInProgress,
                1000,
                new List<uint>() { (uint)EntityID.CollectPart1Dummy, (uint)EntityID.CollectPart2Dummy, (uint)EntityID.CollectPart3Dummy },
                MyUseObjectiveType.Taking) { SaveOnSuccess =  true, StartDialogId = MyDialogueEnum.BARTHS_MOON_TRANSMITTER_2500, HudName = MyTextsWrapperEnum.HudPart };
            m_needPart3.OnMissionSuccess += NeedPart3OnOnMissionSuccess;
            m_needPart3.OnObjectUsedSucces += OnObjectUsedSucces;
            m_needPart3.OnMissionLoaded += NeedPart1OnOnMissionLoaded;
            m_objectives.Add(m_needPart3);


            m_escape = new MyObjective(
                (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_FIND_WAY_OUT_Name),
                MyMissionID.BARTHS_MOON_TRANSMITTER_FIND_WAY_OUT,
                (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_FIND_WAY_OUT_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.BARTHS_MOON_TRANSMITTER_FIND_PART3 },
                new MyMissionLocation(baseSector, (uint)EntityID.EscapeDummy)
                ) { SaveOnSuccess = true, StartDialogId = MyDialogueEnum.BARTHS_MOON_TRANSMITTER_2600, SuccessDialogId = MyDialogueEnum.BARTHS_MOON_TRANSMITTER_3100, HudName = MyTextsWrapperEnum.Nothing };
            m_escape.OnMissionSuccess += Escape_Success;
            m_escape.Components.Add(new MyDetectorDialogue((uint)EntityID.EscapeEventDummy, MyDialogueEnum.BARTHS_MOON_TRANSMITTER_2700));
            m_escape.Components.Add(new MyDetectorDialogue((uint)EntityID.EscapeDummy, MyDialogueEnum.BARTHS_MOON_TRANSMITTER_2900));
            m_escape.OnMissionLoaded += EscapeOnOnMissionLoaded;
            m_escape.OnMissionCleanUp += EscapeOnOnMissionCleanUp;
            m_objectives.Add(m_escape);
            

            var build = new MyUseObjective(
                (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_BUILD_TRANSMITTER_Name),
                MyMissionID.BARTHS_MOON_TRANSMITTER_BUILD_TRANSMITTER,
                (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_BUILD_TRANSMITTER_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.BARTHS_MOON_TRANSMITTER_FIND_WAY_OUT },
                new MyMissionLocation(baseSector, (uint)EntityID.BuildDetector4),
                MyTextsWrapperEnum.PressToBuildTransmitter,
                MyTextsWrapperEnum.Transmitter,
                MyTextsWrapperEnum.BuildingInProgress,
                3000,
                MyUseObjectiveType.Building);
            build.OnMissionSuccess += Build_Success;
            build.OnMissionLoaded += Build_Loaded;
            build.Components.Add(new MySpawnpointWaves((uint)EntityID.EscapeDummy, 0,
                                                       new List<uint[]>
                                                           {
                                                               new List<uint> {(uint) EntityID.SpawnPoint9}.ToArray(),
                                                               new List<uint>
                                                                   {
                                                                       (uint) EntityID.SpawnPoint10,
                                                                       (uint) EntityID.SpawnPoint11,
                                                                       (uint) EntityID.SpawnPoint12
                                                                   }.ToArray()
                                                           }));
            build.Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorWayBack2, 0,
                                                       new List<uint[]>
                                                           {
                                                               new List<uint> {(uint) EntityID.SpawnPoint13}.ToArray(),
                                                               new List<uint> {(uint) EntityID.SpawnPoint14}.ToArray()
                                                           }));
            m_objectives.Add(build);

            var backToMadelyn = new MyObjective(
                (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_RETURN_BACK_TO_MADELYN_Name),
                MyMissionID.BARTHS_MOON_TRANSMITTER_RETURN_BACK_TO_MADELYN,
                (MyTextsWrapperEnum.BARTHS_MOON_TRANSMITTER_RETURN_BACK_TO_MADELYN_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.BARTHS_MOON_TRANSMITTER_BUILD_TRANSMITTER },
                new MyMissionLocation(baseSector, MyMissionLocation.MADELYN_HANGAR),
                startDialogId: MyDialogueEnum.BARTHS_MOON_TRANSMITTER_3200,
                radiusOverride: MyMissionLocation.MADELYN_HANGAR_RADIUS
            ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudMadelynsSapho };
            m_objectives.Add(backToMadelyn);

            //var talkWithThomasBarthEnd = new MyMeetObjective(
            //    new StringBuilder("Talk with Thomas Barth"),
            //    MyMissionID.BARTHS_MOON_TRANSMITTER_TALK_WITH_THOMAS_BARTH_END,
            //    new StringBuilder(""),
            //    this,
            //    new MyMissionID[] { MyMissionID.BARTHS_MOON_TRANSMITTER_BUILD_TRANSMITTER },
            //    null,
            //    (uint)EntityID.ThomasBartId,
            //    50,
            //    0.25f
            //) { SaveOnSuccess = true, FollowMe = false };
            //talkWithThomasBarthEnd.OnMissionSuccess += TalkWithThomasBarthEnd_Success;
            //m_objectives.Add(talkWithThomasBarthEnd);


            #endregion
        }
        public MyFortValiantMissionC()
            : base()
        {
            ID                         = MyMissionID.FORT_VALIANT_C;              /* ID must be added to MyMissions.cs */
            DebugName                  = new StringBuilder("09e-Fort Valiant C"); // Name of mission
            Name                       = MyTextsWrapperEnum.FORT_VALIANT_C;
            Description                = MyTextsWrapperEnum.FORT_VALIANT_C_Description;
            RequiredActors             = new MyActorEnum[] { MyActorEnum.MADELYN, MyActorEnum.MARCUS, MyActorEnum.TARJA, MyActorEnum.VALENTIN };
            Location                   = new MyMissionLocation(baseSector, (uint)EntityID.StartLocationC); //StartLocationC Starting dummy point - must by typecasted to uint and referenced from EntityID enum
            RequiredMissions           = new MyMissionID[] { MyMissionID.SLAVER_BASE_2 };
            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.FORT_VALIANT_C_PICK_UP_EQUIP };
            AchievementName            = MySteamAchievementNames.Mission17_FortValiantDungeons;

            #region Objectives
            m_objectives = new List <MyObjective>();

            var speakCaptain = new MyMeetObjective(
                (MyTextsWrapperEnum.FORT_VALIANT_C_CAPTAIN_Name),
                MyMissionID.FORT_VALIANT_C_CAPTAIN,
                (MyTextsWrapperEnum.FORT_VALIANT_C_CAPTAIN_Description),
                this,
                new MyMissionID[] { },
                (uint)EntityID.CaptainDummy,
                (uint)EntityID.Captain,
                50,
                0.25f,
                MyDialogueEnum.FORT_VALIANT_C_0100,
                null,
                false
                )
            {
                SaveOnSuccess = true, FollowMe = false, StartDialogId = MyDialogueEnum.FORT_VALIANT_C_0100_BEGIN, HudName = MyTextsWrapperEnum.HudCaptainCedric
            };
            speakCaptain.OnMissionSuccess += SpeakCaptainOnOnMissionSuccess;
            m_objectives.Add(speakCaptain);


            var reachUpperFloor = new MyObjective(
                (MyTextsWrapperEnum.FORT_VALIANT_C_UPPER_FLOOR_Name),
                MyMissionID.FORT_VALIANT_C_UPPER_FLOOR,
                (MyTextsWrapperEnum.FORT_VALIANT_C_UPPER_FLOOR_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.FORT_VALIANT_C_CAPTAIN },
                new MyMissionLocation(baseSector, (uint)EntityID.UpperFloorDummy)
                )
            {
                HudName = MyTextsWrapperEnum.Nothing
            };
            m_objectives.Add(reachUpperFloor);



            var meetRoyal = new MyMeetObjective(
                (MyTextsWrapperEnum.FORT_VALIANT_C_EQUIP_TALK_Name),
                MyMissionID.FORT_VALIANT_C_EQUIP_TALK,
                (MyTextsWrapperEnum.FORT_VALIANT_C_EQUIP_TALK_Description),
                this,
                new MyMissionID[] { MyMissionID.FORT_VALIANT_C_UPPER_FLOOR },
                (uint)EntityID.RoyalDummy,
                (uint)EntityID.BotRoyal,
                50,
                0.25f,
                MyDialogueEnum.FORT_VALIANT_C_0200,
                null,
                false
                )
            {
                SaveOnSuccess = true, FollowMe = false
            };
            m_objectives.Add(meetRoyal);


            var giveoutEquipment = new MyUseObjective(
                (MyTextsWrapperEnum.FORT_VALIANT_C_EQUIP_Name),
                MyMissionID.FORT_VALIANT_C_EQUIP,
                (MyTextsWrapperEnum.FORT_VALIANT_C_EQUIP_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.FORT_VALIANT_C_EQUIP_TALK },
                new MyMissionLocation(baseSector, (uint)EntityID.RoyalCargoBoxDetector),
                MyTextsWrapperEnum.PressToGiveEquipment,
                MyTextsWrapperEnum.CargoBox,
                MyTextsWrapperEnum.TransferInProgress,
                3000,
                MyUseObjectiveType.Activating
                )
            {
                SaveOnSuccess = true
            };
            giveoutEquipment.OnMissionSuccess += GiveoutEquipmentOnOnMissionSuccess;
            m_objectives.Add(giveoutEquipment);



            var meetOfficers = new MyObjective(
                (MyTextsWrapperEnum.FORT_VALIANT_C_MEET_OFFICIALS_Name),
                MyMissionID.FORT_VALIANT_C_MEET_OFFICIALS,
                (MyTextsWrapperEnum.FORT_VALIANT_C_MEET_OFFICIALS_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.FORT_VALIANT_C_EQUIP },
                new MyMissionLocation(baseSector, (uint)EntityID.OfficalsDetector),
                null
                )
            {
                StartDialogId = MyDialogueEnum.FORT_VALIANT_C_0300, SuccessDialogId = MyDialogueEnum.FORT_VALIANT_C_0400, HudName = MyTextsWrapperEnum.HudChamber
            };
            m_objectives.Add(meetOfficers);


            var leaveOfficers = new MyObjective(
                (MyTextsWrapperEnum.FORT_VALIANT_C_LEAVE_OFFICIALS_Name),
                MyMissionID.FORT_VALIANT_C_LEAVE_OFFICIALS,
                (MyTextsWrapperEnum.FORT_VALIANT_C_LEAVE_OFFICIALS_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.FORT_VALIANT_C_MEET_OFFICIALS },
                new MyMissionLocation(baseSector, (uint)EntityID.OfficalsleaveDetector),
                null
                )
            {
                SuccessDialogId = MyDialogueEnum.FORT_VALIANT_C_0500, HudName = MyTextsWrapperEnum.Nothing
            };
            m_objectives.Add(leaveOfficers);

            var followPath = new MyObjective(
                (MyTextsWrapperEnum.FORT_VALIANT_C_LEAVE_FOLLOW_Name),
                MyMissionID.FORT_VALIANT_C_LEAVE_FOLLOW,
                (MyTextsWrapperEnum.FORT_VALIANT_C_LEAVE_FOLLOW_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.FORT_VALIANT_C_LEAVE_OFFICIALS },
                new MyMissionLocation(baseSector, (uint)EntityID.FollowPathDetector),
                null,
                null)
            {
                HudName = MyTextsWrapperEnum.Nothing
            };
            m_objectives.Add(followPath);

            var speakWithSir = new MyMeetObjective(
                (MyTextsWrapperEnum.FORT_VALIANT_C_SPEAK_SIR_Name),
                MyMissionID.FORT_VALIANT_C_SPEAK_SIR,
                (MyTextsWrapperEnum.FORT_VALIANT_C_SPEAK_SIR_Description),
                this,
                new MyMissionID[] { MyMissionID.FORT_VALIANT_C_LEAVE_FOLLOW },
                (uint)EntityID.SirBendivereDummy,
                (uint)EntityID.BotTemplar,
                50,
                0.25f,
                MyDialogueEnum.FORT_VALIANT_C_0600,
                null,
                false
                )
            {
                SaveOnSuccess = true, FollowMe = false, HudName = MyTextsWrapperEnum.HudSirGeraint
            };
            m_objectives.Add(speakWithSir);


            var getItemsFromCargoBoxes = new MyObjectiveGetItems(
                (MyTextsWrapperEnum.FORT_VALIANT_C_GET_EQUP_CARGO_Name),
                MyMissionID.FORT_VALIANT_C_GET_EQUP_CARGO,
                (MyTextsWrapperEnum.FORT_VALIANT_C_GET_EQUP_CARGO_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.FORT_VALIANT_C_SPEAK_SIR },
                new List <MyItemToGetDefinition>()
            {
                new MyItemToGetDefinition(MyMwcObjectBuilderTypeEnum.SmallShip_HackingTool, (int)MyMwcObjectBuilder_SmallShip_HackingTool_TypesEnum.Level_1)
            },
                new List <uint>()
            {
                (uint)EntityID.CargoBox
            }
                )
            {
                SaveOnSuccess = true
            };
            m_objectives.Add(getItemsFromCargoBoxes);



            var findEntrance = new MyObjective(
                (MyTextsWrapperEnum.FORT_VALIANT_C_FOLLOW_FIND_VENTILATION_Name),
                MyMissionID.FORT_VALIANT_C_FOLLOW_FIND_VENTILATION,
                (MyTextsWrapperEnum.FORT_VALIANT_C_FOLLOW_FIND_VENTILATION_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.FORT_VALIANT_C_GET_EQUP_CARGO },
                new MyMissionLocation(baseSector, (uint)EntityID.Ventilation),
                null,
                null)
            {
                StartDialogId = MyDialogueEnum.FORT_VALIANT_C_0700, HudName = MyTextsWrapperEnum.HudEntrance
            };
            findEntrance.OnMissionLoaded += FindEntranceOnOnMissionLoaded;
            m_objectives.Add(findEntrance);


            var disableScanner = new MyObjectiveDisablePrefabs(
                (MyTextsWrapperEnum.FORT_VALIANT_C_FOLLOW_TURN_OFF_GATE_Name),
                MyMissionID.FORT_VALIANT_C_FOLLOW_TURN_OFF_GATE,
                (MyTextsWrapperEnum.FORT_VALIANT_C_FOLLOW_TURN_OFF_GATE_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.FORT_VALIANT_C_FOLLOW_FIND_VENTILATION },
                new List <uint> {
                (uint)EntityID.DisableScanner
            },
                new List <uint> {
                (uint)EntityID.DisableScannerHub
            },
                false,
                false
                )
            {
                SaveOnSuccess = true, StartDialogId = MyDialogueEnum.FORT_VALIANT_C_0800, HudName = MyTextsWrapperEnum.HudSecurityHub
            };
            disableScanner.OnMissionLoaded += DisableScannerOnOnMissionLoaded;
            m_objectives.Add(disableScanner);

            var scanners1 = new MyObjective(
                (MyTextsWrapperEnum.FORT_VALIANT_C_SCANNERS1_Name),
                MyMissionID.FORT_VALIANT_C_SCANNERS1,
                (MyTextsWrapperEnum.FORT_VALIANT_C_SCANNERS1_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.FORT_VALIANT_C_FOLLOW_TURN_OFF_GATE },
                new MyMissionLocation(baseSector, (uint)EntityID.ScannersLocation1))
            {
                SaveOnSuccess = true, StartDialogId = MyDialogueEnum.FORT_VALIANT_C_1000, HudName = MyTextsWrapperEnum.Nothing
            };
            //scanners1.Components.Add(new MyDetectorDialogue((uint)EntityID.DetectorGuardsDialogue, MyDialogueEnum.FORT_VALIANT_C_1100));
            scanners1.Components.Add(new MyDetectorDialogue((uint)EntityID.DetectorSensorsDialogue, MyDialogueEnum.FORT_VALIANT_C_1200));
            m_objectives.Add(scanners1);


            var scanners2 = new MyObjective(
                (MyTextsWrapperEnum.FORT_VALIANT_C_SCANNERS2_Name),
                MyMissionID.FORT_VALIANT_C_SCANNERS2,
                (MyTextsWrapperEnum.FORT_VALIANT_C_SCANNERS2_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.FORT_VALIANT_C_SCANNERS1 },
                new MyMissionLocation(baseSector, (uint)EntityID.ScannersLocation2))
            {
                SaveOnSuccess = true, HudName = MyTextsWrapperEnum.Nothing
            };
            scanners2.OnMissionSuccess += Scanners2OnOnMissionSuccess;
            m_objectives.Add(scanners2);


            var scanners23 = new MyObjective(
                (MyTextsWrapperEnum.FORT_VALIANT_C_SCANNERS23_Name),
                MyMissionID.FORT_VALIANT_C_SCANNERS23,
                (MyTextsWrapperEnum.FORT_VALIANT_C_SCANNERS23_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.FORT_VALIANT_C_SCANNERS2 },
                new MyMissionLocation(baseSector, (uint)EntityID.ScannersLocation23))
            {
                SaveOnSuccess = true, HudName = MyTextsWrapperEnum.Nothing
            };
            m_objectives.Add(scanners23);

            m_findArtifact = new MyUseObjective(
                (MyTextsWrapperEnum.FORT_VALIANT_C_TAKE_ARTEFACT_Name),
                MyMissionID.FORT_VALIANT_C_TAKE_ARTEFACT,
                (MyTextsWrapperEnum.FORT_VALIANT_C_TAKE_ARTEFACT_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.FORT_VALIANT_C_SCANNERS23 },
                null,
                MyTextsWrapperEnum.NotificationTakeArtifact,
                MyTextsWrapperEnum.Artifact,
                MyTextsWrapperEnum.TakingInProgress,
                3000,
                MyUseObjectiveType.Taking,
                null,
                null,
                null,
                new List <uint>()
            {
                (uint)EntityID.Box1Marker, (uint)EntityID.Box2Marker, (uint)EntityID.Box3Marker, (uint)EntityID.Box4Marker
            },
                (uint)EntityID.ArtifactDummy
                )
            {
                SaveOnSuccess = true, StartDialogId = MyDialogueEnum.FORT_VALIANT_C_1400
            };
            m_findArtifact.OnMissionLoaded  += FindArtifactOnOnMissionLoaded;
            m_findArtifact.OnMissionSuccess += FindArtifactOnOnMissionSuccess;
            m_findArtifact.Components.Add(new MyTimedDialogue(new TimeSpan(0, 0, 10), MyDialogueEnum.FORT_VALIANT_C_1500));
            m_objectives.Add(m_findArtifact);


            var vault = new MyObjective(
                (MyTextsWrapperEnum.FORT_VALIANT_C_VALUT_Name),
                MyMissionID.FORT_VALIANT_C_VALUT,
                (MyTextsWrapperEnum.FORT_VALIANT_C_VALUT_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.FORT_VALIANT_C_TAKE_ARTEFACT },
                new MyMissionLocation(baseSector, (uint)EntityID.ScannersLocation2))
            {
                HudName = MyTextsWrapperEnum.Nothing
            };
            vault.Components.Add(new MyDetectorDialogue((uint)EntityID.DetectorSecurityFields, MyDialogueEnum.FORT_VALIANT_C_1700));
            vault.Components.Add(new MyDetectorDialogue((uint)EntityID.DetectorOpenDoors, MyDialogueEnum.FORT_VALIANT_C_1800));
            vault.Components.Add(new MyDetectorDialogue((uint)EntityID.DetectorComputer, MyDialogueEnum.FORT_VALIANT_C_1900));
            m_objectives.Add(vault);

            m_disableScanner2 = new MyObjectiveDisablePrefabs(
                (MyTextsWrapperEnum.FORT_VALIANT_C_TURN_OFF_SCANNER_Name),
                MyMissionID.FORT_VALIANT_C_TURN_OFF_SCANNER,
                (MyTextsWrapperEnum.FORT_VALIANT_C_TURN_OFF_SCANNER_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.FORT_VALIANT_C_VALUT },
                new List <uint> {
                (uint)EntityID.DisableSnanners2
            },
                new List <uint> {
                (uint)EntityID.DisableScanner2Hub
            },
                false

                )
            {
                SaveOnSuccess = true, SuccessDialogId = MyDialogueEnum.FORT_VALIANT_C_2100, HudName = MyTextsWrapperEnum.HudSecurityHub
            };
            m_disableScanner2.OnMissionSuccess += DisableScanner2_Success;
            m_objectives.Add(m_disableScanner2);

            var scanners4 = new MyObjective(
                (MyTextsWrapperEnum.FORT_VALIANT_C_SCANNERS4_Name),
                MyMissionID.FORT_VALIANT_C_SCANNERS4,
                (MyTextsWrapperEnum.FORT_VALIANT_C_SCANNERS4_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.FORT_VALIANT_C_TURN_OFF_SCANNER },
                new MyMissionLocation(baseSector, (uint)EntityID.HigherFloors))
            {
                HudName = MyTextsWrapperEnum.Nothing
            };
            m_objectives.Add(scanners4);


            var elevator = new MyObjective(
                (MyTextsWrapperEnum.FORT_VALIANT_C_TOP_ELEVATOR_Name),
                MyMissionID.FORT_VALIANT_C_TOP_ELEVATOR,
                (MyTextsWrapperEnum.FORT_VALIANT_C_TOP_ELEVATOR_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.FORT_VALIANT_C_SCANNERS4 },
                new MyMissionLocation(baseSector, (uint)EntityID.ElevatorDummy))
            {
                HudName = MyTextsWrapperEnum.Nothing
            };
            m_objectives.Add(elevator);


            var escape = new MyObjective(
                (MyTextsWrapperEnum.FORT_VALIANT_C_VENT_SYSTEM_Name),
                MyMissionID.FORT_VALIANT_C_VENT_SYSTEM,
                (MyTextsWrapperEnum.FORT_VALIANT_C_VENT_SYSTEM_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.FORT_VALIANT_C_TOP_ELEVATOR },
                new MyMissionLocation(baseSector, (uint)EntityID.EscapeVentSystemDummy))
            {
                SuccessDialogId = MyDialogueEnum.FORT_VALIANT_C_2300, HudName = MyTextsWrapperEnum.Nothing
            };
            m_objectives.Add(escape);


            var useCatacombs = new MyObjective(
                (MyTextsWrapperEnum.FORT_VALIANT_C_CATACOMBS_Name),
                MyMissionID.FORT_VALIANT_C_CATACOMBS,
                (MyTextsWrapperEnum.FORT_VALIANT_C_CATACOMBS_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.FORT_VALIANT_C_VENT_SYSTEM },
                new MyMissionLocation(baseSector, (uint)EntityID.EscapeCatacombsDummy)
                //startDialogId: dialog9
                )
            {
                HudName = MyTextsWrapperEnum.Nothing
            };
            useCatacombs.OnMissionSuccess += UseCatacombsOnOnMissionSuccess;
            m_objectives.Add(useCatacombs);

            var getItemsFromCargoBoxes2 = new MyUseObjective(
                (MyTextsWrapperEnum.FORT_VALIANT_C_PICK_UP_EQUIP_Name),
                MyMissionID.FORT_VALIANT_C_PICK_UP_EQUIP,
                (MyTextsWrapperEnum.FORT_VALIANT_C_PICK_UP_EQUIP_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.FORT_VALIANT_C_CATACOMBS },
                new MyMissionLocation(baseSector, (uint)EntityID.RoyalCargoBoxDetector),
                MyTextsWrapperEnum.PressToTakeCargo,
                MyTextsWrapperEnum.CargoBox,
                MyTextsWrapperEnum.TakingInProgress,
                3000,
                MyUseObjectiveType.Taking
                //startDialogId: dialog10
                )
            {
                SaveOnSuccess = true, StartDialogId = MyDialogueEnum.FORT_VALIANT_C_2400
            };
            getItemsFromCargoBoxes2.Components.Add(new MyDetectorDialogue((uint)EntityID.GetItemsWayBackDialogue, MyDialogueEnum.FORT_VALIANT_C_2500));
            getItemsFromCargoBoxes2.OnMissionSuccess += GetItemsFromCargoBoxesOnOnMissionSuccess;
            m_objectives.Add(getItemsFromCargoBoxes2);
            #endregion
        }
        public MyFortValiantMissionC()
            : base()
        {
            ID = MyMissionID.FORT_VALIANT_C; /* ID must be added to MyMissions.cs */
            DebugName = new StringBuilder("09e-Fort Valiant C"); // Name of mission
            Name = MyTextsWrapperEnum.FORT_VALIANT_C;
            Description = MyTextsWrapperEnum.FORT_VALIANT_C_Description;
            RequiredActors = new MyActorEnum[] { MyActorEnum.MADELYN, MyActorEnum.MARCUS, MyActorEnum.TARJA, MyActorEnum.VALENTIN };
            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocationC); //StartLocationC Starting dummy point - must by typecasted to uint and referenced from EntityID enum
            RequiredMissions = new MyMissionID[] { MyMissionID.SLAVER_BASE_2 };
            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.FORT_VALIANT_C_PICK_UP_EQUIP };
            AchievementName = MySteamAchievementNames.Mission17_FortValiantDungeons;

            #region Objectives
            m_objectives = new List<MyObjective>();

            var speakCaptain = new MyMeetObjective(
                 (MyTextsWrapperEnum.FORT_VALIANT_C_CAPTAIN_Name),
                 MyMissionID.FORT_VALIANT_C_CAPTAIN,
                 (MyTextsWrapperEnum.FORT_VALIANT_C_CAPTAIN_Description),
                 this,
                 new MyMissionID[] { },
                 (uint)EntityID.CaptainDummy,
                 (uint)EntityID.Captain,
                 50,
                 0.25f,
                 MyDialogueEnum.FORT_VALIANT_C_0100,
                 null,
                 false
            ) { SaveOnSuccess = true, FollowMe = false, StartDialogId = MyDialogueEnum.FORT_VALIANT_C_0100_BEGIN, HudName = MyTextsWrapperEnum.HudCaptainCedric };
            speakCaptain.OnMissionSuccess += SpeakCaptainOnOnMissionSuccess;
            m_objectives.Add(speakCaptain);


            var reachUpperFloor = new MyObjective(
                (MyTextsWrapperEnum.FORT_VALIANT_C_UPPER_FLOOR_Name),
                MyMissionID.FORT_VALIANT_C_UPPER_FLOOR,
                (MyTextsWrapperEnum.FORT_VALIANT_C_UPPER_FLOOR_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.FORT_VALIANT_C_CAPTAIN },
                new MyMissionLocation(baseSector, (uint)EntityID.UpperFloorDummy)
                ) { HudName = MyTextsWrapperEnum.Nothing };
            m_objectives.Add(reachUpperFloor);



            var meetRoyal = new MyMeetObjective(
                 (MyTextsWrapperEnum.FORT_VALIANT_C_EQUIP_TALK_Name),
                 MyMissionID.FORT_VALIANT_C_EQUIP_TALK,
                 (MyTextsWrapperEnum.FORT_VALIANT_C_EQUIP_TALK_Description),
                 this,
                 new MyMissionID[] { MyMissionID.FORT_VALIANT_C_UPPER_FLOOR },
                 (uint)EntityID.RoyalDummy,
                 (uint)EntityID.BotRoyal,
                 50,
                 0.25f,
                 MyDialogueEnum.FORT_VALIANT_C_0200,
                 null,
                 false
            ) { SaveOnSuccess = true, FollowMe = false };
            m_objectives.Add(meetRoyal);


            var giveoutEquipment = new MyUseObjective(
                   (MyTextsWrapperEnum.FORT_VALIANT_C_EQUIP_Name),
                   MyMissionID.FORT_VALIANT_C_EQUIP,
                   (MyTextsWrapperEnum.FORT_VALIANT_C_EQUIP_Description),
                   null,
                   this,
                   new MyMissionID[] { MyMissionID.FORT_VALIANT_C_EQUIP_TALK },
                   new MyMissionLocation(baseSector, (uint)EntityID.RoyalCargoBoxDetector),
                   MyTextsWrapperEnum.PressToGiveEquipment,
                   MyTextsWrapperEnum.CargoBox,
                   MyTextsWrapperEnum.TransferInProgress,
                   3000,
                   MyUseObjectiveType.Activating
            ) { SaveOnSuccess = true };
            giveoutEquipment.OnMissionSuccess += GiveoutEquipmentOnOnMissionSuccess;
            m_objectives.Add(giveoutEquipment);



            var meetOfficers = new MyObjective(
                (MyTextsWrapperEnum.FORT_VALIANT_C_MEET_OFFICIALS_Name),
                MyMissionID.FORT_VALIANT_C_MEET_OFFICIALS,
                (MyTextsWrapperEnum.FORT_VALIANT_C_MEET_OFFICIALS_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.FORT_VALIANT_C_EQUIP },
                new MyMissionLocation(baseSector, (uint)EntityID.OfficalsDetector),
                null
                ) { StartDialogId = MyDialogueEnum.FORT_VALIANT_C_0300, SuccessDialogId = MyDialogueEnum.FORT_VALIANT_C_0400, HudName = MyTextsWrapperEnum.HudChamber };
            m_objectives.Add(meetOfficers);


            var leaveOfficers = new MyObjective(
                (MyTextsWrapperEnum.FORT_VALIANT_C_LEAVE_OFFICIALS_Name),
                MyMissionID.FORT_VALIANT_C_LEAVE_OFFICIALS,
                (MyTextsWrapperEnum.FORT_VALIANT_C_LEAVE_OFFICIALS_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.FORT_VALIANT_C_MEET_OFFICIALS },
                new MyMissionLocation(baseSector, (uint)EntityID.OfficalsleaveDetector),
                null
                ) { SuccessDialogId = MyDialogueEnum.FORT_VALIANT_C_0500, HudName = MyTextsWrapperEnum.Nothing };
            m_objectives.Add(leaveOfficers);

            var followPath = new MyObjective(
                (MyTextsWrapperEnum.FORT_VALIANT_C_LEAVE_FOLLOW_Name),
                MyMissionID.FORT_VALIANT_C_LEAVE_FOLLOW,
                (MyTextsWrapperEnum.FORT_VALIANT_C_LEAVE_FOLLOW_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.FORT_VALIANT_C_LEAVE_OFFICIALS },
                new MyMissionLocation(baseSector, (uint)EntityID.FollowPathDetector),
                null,
                null) { HudName = MyTextsWrapperEnum.Nothing };
            m_objectives.Add(followPath);

            var speakWithSir = new MyMeetObjective(
                (MyTextsWrapperEnum.FORT_VALIANT_C_SPEAK_SIR_Name),
                MyMissionID.FORT_VALIANT_C_SPEAK_SIR,
                 (MyTextsWrapperEnum.FORT_VALIANT_C_SPEAK_SIR_Description),
                 this,
                new MyMissionID[] { MyMissionID.FORT_VALIANT_C_LEAVE_FOLLOW },
                 (uint)EntityID.SirBendivereDummy,
                 (uint)EntityID.BotTemplar,
                 50,
                 0.25f,
                 MyDialogueEnum.FORT_VALIANT_C_0600,
                 null,
                 false
            ) { SaveOnSuccess = true, FollowMe = false, HudName = MyTextsWrapperEnum.HudSirGeraint };
            m_objectives.Add(speakWithSir);


            var getItemsFromCargoBoxes = new MyObjectiveGetItems(
                (MyTextsWrapperEnum.FORT_VALIANT_C_GET_EQUP_CARGO_Name),
                MyMissionID.FORT_VALIANT_C_GET_EQUP_CARGO,
                (MyTextsWrapperEnum.FORT_VALIANT_C_GET_EQUP_CARGO_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.FORT_VALIANT_C_SPEAK_SIR },
                new List<MyItemToGetDefinition>() {
                            new MyItemToGetDefinition(MyMwcObjectBuilderTypeEnum.SmallShip_HackingTool, (int)MyMwcObjectBuilder_SmallShip_HackingTool_TypesEnum.Level_1)},
                new List<uint>() { (uint)EntityID.CargoBox }
            ) { SaveOnSuccess = true };
            m_objectives.Add(getItemsFromCargoBoxes);



            var findEntrance = new MyObjective(
                (MyTextsWrapperEnum.FORT_VALIANT_C_FOLLOW_FIND_VENTILATION_Name),
                MyMissionID.FORT_VALIANT_C_FOLLOW_FIND_VENTILATION,
                (MyTextsWrapperEnum.FORT_VALIANT_C_FOLLOW_FIND_VENTILATION_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.FORT_VALIANT_C_GET_EQUP_CARGO },
                new MyMissionLocation(baseSector, (uint)EntityID.Ventilation),
                null,
                null) { StartDialogId = MyDialogueEnum.FORT_VALIANT_C_0700, HudName = MyTextsWrapperEnum.HudEntrance };
            findEntrance.OnMissionLoaded += FindEntranceOnOnMissionLoaded;
            m_objectives.Add(findEntrance);
            

            var disableScanner = new MyObjectiveDisablePrefabs(
                  (MyTextsWrapperEnum.FORT_VALIANT_C_FOLLOW_TURN_OFF_GATE_Name),
                  MyMissionID.FORT_VALIANT_C_FOLLOW_TURN_OFF_GATE,
                  (MyTextsWrapperEnum.FORT_VALIANT_C_FOLLOW_TURN_OFF_GATE_Description),
                    null,
                    this,
                    new MyMissionID[] { MyMissionID.FORT_VALIANT_C_FOLLOW_FIND_VENTILATION },
                    new List<uint> { (uint)EntityID.DisableScanner },
                    new List<uint> { (uint)EntityID.DisableScannerHub },
                    false,
                    false
                ) { SaveOnSuccess = true, StartDialogId = MyDialogueEnum.FORT_VALIANT_C_0800, HudName = MyTextsWrapperEnum.HudSecurityHub };
            disableScanner.OnMissionLoaded += DisableScannerOnOnMissionLoaded;
            m_objectives.Add(disableScanner);

            var scanners1 = new MyObjective(
                (MyTextsWrapperEnum.FORT_VALIANT_C_SCANNERS1_Name),
                MyMissionID.FORT_VALIANT_C_SCANNERS1,
                (MyTextsWrapperEnum.FORT_VALIANT_C_SCANNERS1_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.FORT_VALIANT_C_FOLLOW_TURN_OFF_GATE },
                new MyMissionLocation(baseSector, (uint)EntityID.ScannersLocation1)) { SaveOnSuccess = true, StartDialogId = MyDialogueEnum.FORT_VALIANT_C_1000, HudName = MyTextsWrapperEnum.Nothing };
            //scanners1.Components.Add(new MyDetectorDialogue((uint)EntityID.DetectorGuardsDialogue, MyDialogueEnum.FORT_VALIANT_C_1100));
            scanners1.Components.Add(new MyDetectorDialogue((uint)EntityID.DetectorSensorsDialogue, MyDialogueEnum.FORT_VALIANT_C_1200));
            m_objectives.Add(scanners1);


            var scanners2 = new MyObjective(
                (MyTextsWrapperEnum.FORT_VALIANT_C_SCANNERS2_Name),
                MyMissionID.FORT_VALIANT_C_SCANNERS2,
                (MyTextsWrapperEnum.FORT_VALIANT_C_SCANNERS2_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.FORT_VALIANT_C_SCANNERS1 },
                new MyMissionLocation(baseSector, (uint)EntityID.ScannersLocation2)) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.Nothing };
            scanners2.OnMissionSuccess += Scanners2OnOnMissionSuccess;
            m_objectives.Add(scanners2);

            
            var scanners23 = new MyObjective(
                (MyTextsWrapperEnum.FORT_VALIANT_C_SCANNERS23_Name),
                MyMissionID.FORT_VALIANT_C_SCANNERS23,
                (MyTextsWrapperEnum.FORT_VALIANT_C_SCANNERS23_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.FORT_VALIANT_C_SCANNERS2 },
                new MyMissionLocation(baseSector, (uint)EntityID.ScannersLocation23)) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.Nothing };
            m_objectives.Add(scanners23);
            
            m_findArtifact = new MyUseObjective(
               (MyTextsWrapperEnum.FORT_VALIANT_C_TAKE_ARTEFACT_Name),
               MyMissionID.FORT_VALIANT_C_TAKE_ARTEFACT,
               (MyTextsWrapperEnum.FORT_VALIANT_C_TAKE_ARTEFACT_Description),
               null,
               this,
               new MyMissionID[] { MyMissionID.FORT_VALIANT_C_SCANNERS23 },
               null,
               MyTextsWrapperEnum.NotificationTakeArtifact,
               MyTextsWrapperEnum.Artifact,
               MyTextsWrapperEnum.TakingInProgress,
               3000,
               MyUseObjectiveType.Taking,
               null,
               null,
               null,
               new List<uint>() { (uint)EntityID.Box1Marker, (uint)EntityID.Box2Marker, (uint)EntityID.Box3Marker, (uint)EntityID.Box4Marker },
               (uint)EntityID.ArtifactDummy
            ) { SaveOnSuccess = true, StartDialogId = MyDialogueEnum.FORT_VALIANT_C_1400 };
            m_findArtifact.OnMissionLoaded += FindArtifactOnOnMissionLoaded;
            m_findArtifact.OnMissionSuccess += FindArtifactOnOnMissionSuccess;
            m_findArtifact.Components.Add(new MyTimedDialogue(new TimeSpan(0,0,10),MyDialogueEnum.FORT_VALIANT_C_1500 ));
            m_objectives.Add(m_findArtifact);


            var vault = new MyObjective(
                (MyTextsWrapperEnum.FORT_VALIANT_C_VALUT_Name),
                MyMissionID.FORT_VALIANT_C_VALUT,
                (MyTextsWrapperEnum.FORT_VALIANT_C_VALUT_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.FORT_VALIANT_C_TAKE_ARTEFACT },
                new MyMissionLocation(baseSector, (uint)EntityID.ScannersLocation2)) { HudName = MyTextsWrapperEnum.Nothing };
            vault.Components.Add(new MyDetectorDialogue((uint)EntityID.DetectorSecurityFields, MyDialogueEnum.FORT_VALIANT_C_1700));
            vault.Components.Add(new MyDetectorDialogue((uint)EntityID.DetectorOpenDoors, MyDialogueEnum.FORT_VALIANT_C_1800));
            vault.Components.Add(new MyDetectorDialogue((uint)EntityID.DetectorComputer, MyDialogueEnum.FORT_VALIANT_C_1900));
            m_objectives.Add(vault);

            m_disableScanner2 = new MyObjectiveDisablePrefabs(
                  (MyTextsWrapperEnum.FORT_VALIANT_C_TURN_OFF_SCANNER_Name),
                  MyMissionID.FORT_VALIANT_C_TURN_OFF_SCANNER,
                  (MyTextsWrapperEnum.FORT_VALIANT_C_TURN_OFF_SCANNER_Description),
                    null,
                    this,
                    new MyMissionID[] { MyMissionID.FORT_VALIANT_C_VALUT },
                    new List<uint> { (uint)EntityID.DisableSnanners2 },
                    new List<uint> { (uint)EntityID.DisableScanner2Hub },
                    false

                ) { SaveOnSuccess = true, SuccessDialogId = MyDialogueEnum.FORT_VALIANT_C_2100, HudName = MyTextsWrapperEnum.HudSecurityHub };
            m_disableScanner2.OnMissionSuccess += DisableScanner2_Success;
            m_objectives.Add(m_disableScanner2);

            var scanners4 = new MyObjective(
                (MyTextsWrapperEnum.FORT_VALIANT_C_SCANNERS4_Name),
                MyMissionID.FORT_VALIANT_C_SCANNERS4,
                (MyTextsWrapperEnum.FORT_VALIANT_C_SCANNERS4_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.FORT_VALIANT_C_TURN_OFF_SCANNER },
                new MyMissionLocation(baseSector, (uint)EntityID.HigherFloors)) { HudName = MyTextsWrapperEnum.Nothing };
            m_objectives.Add(scanners4);


            var elevator = new MyObjective(
                (MyTextsWrapperEnum.FORT_VALIANT_C_TOP_ELEVATOR_Name),
                MyMissionID.FORT_VALIANT_C_TOP_ELEVATOR,
                (MyTextsWrapperEnum.FORT_VALIANT_C_TOP_ELEVATOR_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.FORT_VALIANT_C_SCANNERS4 },
                new MyMissionLocation(baseSector, (uint)EntityID.ElevatorDummy)) { HudName = MyTextsWrapperEnum.Nothing };
            m_objectives.Add(elevator);


            var escape = new MyObjective(
                (MyTextsWrapperEnum.FORT_VALIANT_C_VENT_SYSTEM_Name),
                MyMissionID.FORT_VALIANT_C_VENT_SYSTEM,
                (MyTextsWrapperEnum.FORT_VALIANT_C_VENT_SYSTEM_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.FORT_VALIANT_C_TOP_ELEVATOR },
                new MyMissionLocation(baseSector, (uint)EntityID.EscapeVentSystemDummy)) { SuccessDialogId = MyDialogueEnum.FORT_VALIANT_C_2300, HudName = MyTextsWrapperEnum.Nothing };
            m_objectives.Add(escape);


            var useCatacombs = new MyObjective(
                (MyTextsWrapperEnum.FORT_VALIANT_C_CATACOMBS_Name),
                MyMissionID.FORT_VALIANT_C_CATACOMBS,
                (MyTextsWrapperEnum.FORT_VALIANT_C_CATACOMBS_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.FORT_VALIANT_C_VENT_SYSTEM },
                new MyMissionLocation(baseSector, (uint)EntityID.EscapeCatacombsDummy)
                //startDialogId: dialog9
                ) { HudName = MyTextsWrapperEnum.Nothing };
            useCatacombs.OnMissionSuccess += UseCatacombsOnOnMissionSuccess;
            m_objectives.Add(useCatacombs);

            var getItemsFromCargoBoxes2 = new MyUseObjective(
                (MyTextsWrapperEnum.FORT_VALIANT_C_PICK_UP_EQUIP_Name),
                MyMissionID.FORT_VALIANT_C_PICK_UP_EQUIP,
                (MyTextsWrapperEnum.FORT_VALIANT_C_PICK_UP_EQUIP_Description),
               null,
               this,
               new MyMissionID[] { MyMissionID.FORT_VALIANT_C_CATACOMBS },
               new MyMissionLocation(baseSector, (uint)EntityID.RoyalCargoBoxDetector),
               MyTextsWrapperEnum.PressToTakeCargo,
               MyTextsWrapperEnum.CargoBox,
               MyTextsWrapperEnum.TakingInProgress,
               3000,
               MyUseObjectiveType.Taking
               //startDialogId: dialog10
        ) { SaveOnSuccess = true,StartDialogId = MyDialogueEnum.FORT_VALIANT_C_2400};
            getItemsFromCargoBoxes2.Components.Add(new MyDetectorDialogue((uint)EntityID.GetItemsWayBackDialogue, MyDialogueEnum.FORT_VALIANT_C_2500));
            getItemsFromCargoBoxes2.OnMissionSuccess += GetItemsFromCargoBoxesOnOnMissionSuccess;
            m_objectives.Add(getItemsFromCargoBoxes2);
            #endregion
        }