Example #1
0
        public MySolarfactoryEACMission()
        {
            m_ValidateIDlists = new List <List <uint> >();
            m_ValidateIDlists.Add(m_greenLights);
            m_ValidateIDlists.Add(m_redLights);


            ID          = MyMissionID.SOLAR_PLANT_EAC;              /* ID must be added to MyMissions.cs */
            DebugName   = new StringBuilder("Solar factory - EAC"); // Nazev mise
            Name        = MyTextsWrapperEnum.SOLAR_PLANT_EAC;
            Description = MyTextsWrapperEnum.EmptyDescription;

            MyMwcVector3Int baseSector = new MyMwcVector3Int(2700837, 0, -1774663);     // Story sector of the script

            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation); // Startmy point

            RequiredMissions           = new MyMissionID[] {  };                        // mise ktere musi byt splneny pred prijetim teto mise
            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.SOLAR_PLANT_EAC_RETURN };
            RequiredActors             = new MyActorEnum[] { MyActorEnum.MARCUS, MyActorEnum.MADELYN, MyActorEnum.TARJA, MyActorEnum.VALENTIN };

            m_objectives = new List <MyObjective>(); // Creating of list of submissions
            // START DEFINICE SUBMISE


            var DestroyTransformator = new MyObjectiveDestroy( // Var is used to call functions on that member
                new StringBuilder("Destroy the transformer"),
                MyMissionID.SOLAR_PLANT_EAC_DESTROY,
                new StringBuilder(""),
                null,
                this,
                new MyMissionID[] { },
                Transformators,
                false
                )
            {
                SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudTransformer
            };

            DestroyTransformator.OnMissionSuccess += new Missions.MissionHandler(DestroyedTransformator);
            m_objectives.Add(DestroyTransformator);             // pridani do seznamu submisi

            var ReturnToMothership = new MyObjective(           // One member of that list - je to MyObjective takze cilem je doletet do checkpointu
                new StringBuilder("Return to your mothership"), // nazev submise
                MyMissionID.SOLAR_PLANT_EAC_RETURN,             // id submise
                new StringBuilder(""),                          // popis submise
                null,
                this,
                new MyMissionID[] { MyMissionID.SOLAR_PLANT_EAC_DESTROY, },          // ID submisi ktere musi byt splneny - je to prazdne takze je to prvni submise
                new MyMissionLocation(baseSector, MyMissionLocation.MADELYN_HANGAR), // ID of dummy point of checkpoin
                //StartDialogId: MyDialogueEnum.SLAVERBASE_0900_NUKE_HACKED,
                radiusOverride: MyMissionLocation.MADELYN_HANGAR_RADIUS)
            {
                SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudMadelynsSapho
            };                                    // nastaveni save na checkpointu nebo ne

            m_objectives.Add(ReturnToMothership); //
        }
        public MySmallPirateBase2()
        {
            ID = MyMissionID.SMALL_PIRATE_BASE_2; /* ID must be added to MyMissions.cs */
            Name = new StringBuilder("Small pirate base 2"); // Nazev mise
            Description = new StringBuilder( // popis mise
                "Destroy the station\n"
            );

            MyMwcVector3Int baseSector = new MyMwcVector3Int(9708260,0,-2101810); // Story sector of the script

            Location = new MyMissionLocation(baseSector, 1749); // Starting dummy point

            RequiredMissions = new MyMissionID[] { }; // mise ktere musi byt splneny pred prijetim teto mise

            m_submissions = new List<MyObjective>(); // Creating of list of submissions
            // START DEFINICE SUBMISE

            DestroyEnemies = new MyObjectiveDestroy( // Var is used to call functions on that member
                    new StringBuilder("Destroy the mothership"),
                    MyMissionID.SMALL_PIRATE_BASE_2_DESTROY_ENEMIES,
                    new StringBuilder(""),
                    null,
                    this,
                    new MyMissionID[] { },
                    new List<uint> { 5293 },
                    new List<uint> { },
                    false
            ) { SaveOnSuccess = false };
            m_submissions.Add(DestroyEnemies); // pridani do seznamu submisi
           
        
            DestroyGenerator = new MyObjectiveDestroy( // Var is used to call functions on that member
                new StringBuilder("Destroy the generator"),
                MyMissionID.SMALL_PIRATE_BASE_2_DESTROY_GENERATOR,
                new StringBuilder(""),
                null,
                this,
                new MyMissionID[] {  },
                new List<uint> { 812 },
                new List<uint> {  },
                false
            ) { SaveOnSuccess = false };
            m_submissions.Add(DestroyGenerator); // pridani do seznamu submisi

            var escape = new MyObjective( // One member of that list - je to MySubmission takze cilem je doletet do checkpointu
               new StringBuilder("Return to the mothership"), // nazev submise
               MyMissionID.PIRATE_BASE_1_ESCAPE, // id submise
               new StringBuilder(""), // popis submise
               null,
               this,
               new MyMissionID[] { MyMissionID.PIRATE_BASE_1_DESTROY_GENERATOR, }, // ID submisi ktere musi byt splneny - je to prazdne takze je to prvni submise
               new MyMissionLocation(baseSector, 2475) // ID of dummy point of checkpoint
           ) { SaveOnSuccess = false }; // nastaveni save na checkpointu nebo ne
            m_submissions.Add(escape); // pridani do seznamu submisi
        }
        public MyHippieOutpostMission()
        {
            ID          = MyMissionID.HIPPIE_OUTPOST;          /* ID must be added to MyMissions.cs */
            DebugName   = new StringBuilder("Hippie Outpost"); // Name of mission
            Name        = MyTextsWrapperEnum.HIPPIE_OUTPOST;
            Description = MyTextsWrapperEnum.HIPPIE_OUTPOST_Description;
            MyMwcVector3Int baseSector = new MyMwcVector3Int(238307, 0, -2545498); // Story sector of the script - i.e. (-2465,0,6541)

            RequiredMissions = new MyMissionID[] { };
            Location         = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation); // Starting dummy point - must by typecasted to uint and referenced from EntityID enum
            RequiredActors   = new MyActorEnum[] { MyActorEnum.MADELYN };


            m_objectives = new List <MyObjective>(); // Creating of list of submissions



            var reach_outpost = new MyObjective(        // One member of that list - its type defines the type of submission - MySubmission means fly to the dummypoint to success. Here it is var so you cannot call methods on it
                new StringBuilder("See what's wrong!"), // Name of the submission
                MyMissionID.REACH_OUTPOST,              // ID of the submission - must be added to MyMissions.cs
                new StringBuilder("\n"),                // Description of the submission
                null,
                this,
                new MyMissionID[] { },                                  // ID of submissions required to make this submission available - it is clear so this submission is the starting submission
                new MyMissionLocation(baseSector, (uint)EntityID.reach) // ID of dummy point of checkpoint
                )
            {
                SaveOnSuccess = false, HudName = MyTextsWrapperEnum.Nothing
            };                                                                // False means do not save game in that checkpoint

            m_objectives.Add(reach_outpost);


            // START OF DESTROY SUBMISSION DEFINITION
            var KillKharmaSpoilers = new MyObjectiveDestroy(                   // MySubmissionDestroy means mission with objective to destroy something - here it is class member so you can call methods on it
                new StringBuilder("Place the karma spoilers"),                 //Name of the submission
                MyMissionID.KILL_ALL,                                          // ID of the submission
                new StringBuilder("Don't let them spread negative energy!\n"), // Description of the submission
                null,
                this,
                new MyMissionID[] { MyMissionID.REACH_OUTPOST }, // ID of submissions required to make this submission available - these declares the sequence of submissions

                null,
                new List <uint> {
                (uint)EntityID.Spawn1, (uint)EntityID.Spawn2, (uint)EntityID.Spawn3, (uint)EntityID.Spawn4, (uint)EntityID.Spawn5, (uint)EntityID.Spawn6, (uint)EntityID.Spawn7
            },                                                                                                                                                                                    // ID of objects to be destroyed as a mission objective
                true
                )
            {
                SaveOnSuccess = true, HudName = MyTextsWrapperEnum.Nothing
            };

            m_objectives.Add(KillKharmaSpoilers);
            // END OF DESTROY SUBMISSION DEFINITION
        }
        public MySmallPirateBaseMission()
        {
            ID          = MyMissionID.PIRATE_BASE_1;              /* ID must be added to MyMissions.cs */
            DebugName   = new StringBuilder("Small pirate base"); // Nazev mise
            Name        = MyTextsWrapperEnum.PIRATE_BASE_1;
            Description = MyTextsWrapperEnum.PIRATE_BASE_1_Description;

            MyMwcVector3Int baseSector = new MyMwcVector3Int(14393995, 0, 2939339);     // Story sector of the script

            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation); // Starting dummy point

            RequiredMissions           = new MyMissionID[] { };                         // mise ktere musi byt splneny pred prijetim teto mise
            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.PIRATE_BASE_1_ESCAPE };
            RequiredActors             = new MyActorEnum[] { MyActorEnum.MARCUS, MyActorEnum.MADELYN, MyActorEnum.TARJA, MyActorEnum.VALENTIN };

            m_objectives = new List <MyObjective>(); // Creating of list of submissions
            // START DEFINICE SUBMISE


            DestroyGenerator = new MyObjectiveDestroy( // Var is used to call functions on that member
                new StringBuilder("Destroy the generator"),
                MyMissionID.PIRATE_BASE_1_DESTROY_GENERATOR,
                new StringBuilder(""),
                null,
                this,
                new MyMissionID[] {  },
                generators,
                false
                )
            {
                SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudGenerator
            };
            m_objectives.Add(DestroyGenerator); // pridani do seznamu submisi
            DestroyGenerator.OnMissionSuccess += new Missions.MissionHandler(DestroyMSSuccess);

            var escape = new MyObjective(         // One member of that list - je to MySubmission takze cilem je doletet do checkpointu
                new StringBuilder("Escape"),      // nazev submise
                MyMissionID.PIRATE_BASE_1_ESCAPE, // id submise
                new StringBuilder(""),            // popis submise
                null,
                this,
                new MyMissionID[] { MyMissionID.PIRATE_BASE_1_DESTROY_GENERATOR, },  // ID submisi ktere musi byt splneny - je to prazdne takze je to prvni submise
                new MyMissionLocation(baseSector, MyMissionLocation.MADELYN_HANGAR), // ID of dummy point of checkpoint
                radiusOverride: MyMissionLocation.MADELYN_HANGAR_RADIUS
                )
            {
                SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudMadelynsSapho
            };                        // nastaveni save na checkpointu nebo ne

            m_objectives.Add(escape); // pridani do seznamu submisi
        }
Example #5
0
        public MyTestAttackMission()
        {
            ID          = MyMissionID.TEST_ATTACK_MISSION; /* ID must be added to MyMissions.cs */
            DebugName   = new StringBuilder("Test attack mission");
            Name        = Localization.MyTextsWrapperEnum.EmptyDescription;
            Description = Localization.MyTextsWrapperEnum.EmptyDescription;

            MyMwcVector3Int baseSector = new MyMwcVector3Int(-3, 0, 3);

            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation);

            RequiredMissions = new MyMissionID[] { MyMissionID.TEST_ATTACK_MISSION };
            RequiredActors   = new MyActorEnum[] { };

            m_objectives = new List <MyObjective>();

            var objective1 = new MyObjective(
                new StringBuilder("Objective1"),
                MyMissionID.TEST_ATTACK_MISSION_OBJECTIVE1,
                new StringBuilder(""),
                null,
                this,
                new MyMissionID[] { },
                null
                );

            objective1.SaveOnSuccess = true;
            m_objectives.Add(objective1);

            var objective2 = new MyObjective(
                new StringBuilder("Objective2"),
                MyMissionID.TEST_ATTACK_MISSION_OBJECTIVE2,
                new StringBuilder(""),
                null,
                this,
                new MyMissionID[] { MyMissionID.TEST_MISSION_OBJECTIVE1 },
                null
                );

            objective2.SaveOnSuccess = true;
            m_objectives.Add(objective2);
        }
Example #6
0
        public void SetObjectives(int?missionId /*, List<MyMissionID> optionalObjectives*/)
        {
            MyObjective objective = null;

            if (missionId.HasValue && (objective = MyMissions.GetMissionByID((MyMissionID)missionId.Value) as MyObjective) != null)
            {
                RequiredActors = objective.ParentMission.RequiredActors;
                MainObjective.RequiredActors = objective.RequiredActors;
                InsertRequiredActors();
                objective.InsertRequiredActors();

                Name            = objective.ParentMission.Name;
                NameTemp        = objective.ParentMission.NameTemp;
                Description     = objective.ParentMission.Description;
                DescriptionTemp = objective.ParentMission.DescriptionTemp;
            }
            else
            {
                Name            = MyTextsWrapperEnum.EmptyDescription;
                NameTemp        = new StringBuilder();
                Description     = MyTextsWrapperEnum.EmptyDescription;
                DescriptionTemp = new StringBuilder();
            }

            MainObjective.SetObjectives(objective);

            // Only one objective is active
            //m_objectives.Clear();
            //m_objectives.Add(MainObjective);

            //foreach (var objective in optionalObjectives)
            //{
            //    var baseObjective = MyMissions.GetMissionByID(objective);

            //    if (baseObjective != null)
            //    {
            //        var o = new MyFollowHostObjective(this);
            //        o.SetObjectives(baseObjective);
            //        m_objectives.Add(o);
            //    }
            //}
        }
        public MyChineseEscapeMission()
        {
            ID          = MyMissionID.CHINESE_ESCAPE;                    /* ID must be added to MyMissions.cs */
            Name        = MyTextsWrapperEnum.CHINESE_ESCAPE;
            Description = MyTextsWrapperEnum.CHINESE_ESCAPE_Description; // "Defend Madelyn's mothership and escape with stolen cargo\n"
            DebugName   = new StringBuilder("08d-Chinese escape");
            Flags       = MyMissionFlags.Story;

            MyMwcVector3Int baseSector = new MyMwcVector3Int(-1919599, 0, 5268734);     // Story sector of the script

            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation); // Starting dummy point

            RequiredMissions           = new MyMissionID[] { MyMissionID.CHINESE_REFINERY };
            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.CHINESE_ESCAPE_SPEAK_WITH_MADELYN };
            RequiredActors             = new MyActorEnum[] { MyActorEnum.MADELYN };

            m_objectives = new List <MyObjective>();           // Creating of list of submissions

            m_objective01_flyTowardsMadelyn = new MyObjective( // One member of that list
                (MyTextsWrapperEnum.CHINESE_ESCAPE_GET_CLOSER_Name),
                MyMissionID.CHINESE_ESCAPE_GET_CLOSER,
                (MyTextsWrapperEnum.CHINESE_ESCAPE_GET_CLOSER_Description),
                null,
                this,
                new MyMissionID[] { },
                new MyMissionLocation(baseSector, (uint)EntityID.O01DefendMadelyn),
                startDialogId: MyDialogueEnum.CHINESE_ESCAPE_0100_INTRODUCTION
                )
            {
                SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudMadelynsSapho
            };
            m_objective01_flyTowardsMadelyn.OnMissionLoaded  += O01FlyTowardsMadelynLoaded;
            m_objective01_flyTowardsMadelyn.OnMissionSuccess += O01FlyTowardsMadelynSuccess;

            m_objectives.Add(m_objective01_flyTowardsMadelyn);


            m_objective02_defendMadelyn = new MyObjectiveDestroy(
                (MyTextsWrapperEnum.CHINESE_ESCAPE_DEFEND_SHIP_Name),
                MyMissionID.CHINESE_ESCAPE_DEFEND_SHIP,
                (MyTextsWrapperEnum.CHINESE_ESCAPE_DEFEND_SHIP_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.CHINESE_ESCAPE_GET_CLOSER },
                null,
                new List <uint> {
                (uint)EntityID.SpawnLastL, (uint)EntityID.SpawnLastR, (uint)EntityID.SpawnLastAsteroid
            },
                true,
                true
                )
            {
                SaveOnSuccess = true
            };
            m_objectives.Add(m_objective02_defendMadelyn);
            m_objective02_defendMadelyn.OnMissionLoaded  += new MissionHandler(m_objective02_defendMadelyn_OnMissionLoaded);
            m_objective02_defendMadelyn.OnMissionCleanUp += new MissionHandler(m_objective02_defendMadelyn_OnMissionCleanUp);


            var objective03_lastDialogue = new MyObjectiveDialog(
                MyTextsWrapperEnum.CHINESE_ESCAPE_SPEAK_WITH_MADELYN_Name,
                MyMissionID.CHINESE_ESCAPE_SPEAK_WITH_MADELYN,
                MyTextsWrapperEnum.CHINESE_ESCAPE_SPEAK_WITH_MADELYN_Description,
                null,
                this,
                new MyMissionID[] { MyMissionID.CHINESE_ESCAPE_DEFEND_SHIP },
                dialogId: MyDialogueEnum.CHINESE_ESCAPE_1000_LAST_OF_THEM
                )
            {
                SaveOnSuccess = false
            };

            m_objectives.Add(objective03_lastDialogue);
        }
        public MyLastHopeMission()
        {
            ID          = MyMissionID.LAST_HOPE;
            Name        = MyTextsWrapperEnum.LAST_HOPE;
            Description = MyTextsWrapperEnum.LAST_HOPE_Description;
            DebugName   = new StringBuilder("07-Last Hope");
            Flags       = MyMissionFlags.Story;

            MyMwcVector3Int baseSector = new MyMwcVector3Int(-190694, 0, -18204363);

            Location = new MyMissionLocation(baseSector, (uint)EntityId.ReachColonyDummy);

            RequiredMissions           = new MyMissionID[] { MyMissionID.BARTHS_MOON_TRANSMITTER };
            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.LAST_HOPE_LEAVE_UNDERGROUND };
            RequiredActors             = new MyActorEnum[] { MyActorEnum.MARCUS, MyActorEnum.MADELYN };

            #region Objectives

            m_objectives = new List <MyObjective>();

            var reachColony = new MyObjective(
                MyTextsWrapperEnum.LAST_HOPE_REACH_COLONY,
                MyMissionID.LAST_HOPE_REACH_COLONY,
                MyTextsWrapperEnum.LAST_HOPE_REACH_COLONY_DESCRIPTION,
                null,
                this,
                new MyMissionID[] { },
                new MyMissionLocation(baseSector, (uint)EntityId.ReachColonyDummy),
                startDialogId: MyDialogueEnum.LAST_HOPE_0100
                )
            {
                SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudLastHope
            };
            reachColony.Components.Add(new MySpawnpointWaves((uint)EntityId.ReachColonyDialogDetector, 1, new List <uint[]>()
            {
                new uint[] { (uint)EntityId.ReachColonySpawn1 }
            }));
            var dialogComponent = new MyDetectorDialogue((uint)EntityId.ReachColonyDialogDetector, MyDialogueEnum.LAST_HOPE_0200);
            dialogComponent.OnDialogStarted  += ReachColonyDialogComonentOnOnDialogStarted;
            dialogComponent.OnDialogFinished += ReachColonyDialogComonentOnOnDialogFinished;
            reachColony.Components.Add(dialogComponent);
            m_objectives.Add(reachColony);



            var destroySlaverRiders = new MyObjectiveDestroy(
                MyTextsWrapperEnum.LAST_HOPE_REACH_DESTROY_RIDERS,
                MyMissionID.LAST_HOPE_DESTROY_SLAVER_RIDERS,
                MyTextsWrapperEnum.LAST_HOPE_REACH_DESTROY_RIDERS_DESC,
                null,
                this,
                new MyMissionID[] { MyMissionID.LAST_HOPE_REACH_COLONY },
                new List <uint> {
                (uint)EntityId.DestroySlaverRidersGenerator1, (uint)EntityId.DestroySlaverRidersGenerator2
            }
                )
            {
                SaveOnSuccess = true, StartDialogId = MyDialogueEnum.LAST_HOPE_0300, HudName = MyTextsWrapperEnum.Nothing
            };
            destroySlaverRiders.Components.Add(new MySpawnpointWaves((uint)EntityId.DestroySlaverRidersDetector1, 1, new List <uint[]>()
            {
                new uint[] { (uint)EntityId.DestroySlaverRidersSpawn11 },
                new uint[] { (uint)EntityId.DestroySlaverRidersSpawn12 }
            }));
            destroySlaverRiders.Components.Add(new MySpawnpointWaves((uint)EntityId.DestroySlaverRidersDetector1, 1, new List <uint[]>()
            {
                new uint[] { (uint)EntityId.DestroySlaverRidersSpawn21 },
                new uint[] { (uint)EntityId.DestroySlaverRidersSpawn22 }
            }));
            destroySlaverRiders.Components.Add(new MySpawnpointWaves((uint)EntityId.DestroySlaverRidersDetector3, 1, new List <uint[]>()
            {
                new uint[] { (uint)EntityId.DestroySlaverRidersSpawn31 },
                new uint[] { (uint)EntityId.DestroySlaverRidersSpawn32 }
            }));
            destroySlaverRiders.Components.Add(new MySpawnpointWaves((uint)EntityId.DestroySlaverRidersDetector3, 1, new List <uint[]>()
            {
                new uint[] { (uint)EntityId.DestroySlaverRidersSpawn41 },
                new uint[] { (uint)EntityId.DestroySlaverRidersSpawn42 }
            }));
            destroySlaverRiders.OnMissionLoaded += DestroySlaverRiders_Loaded;
            m_objectives.Add(destroySlaverRiders);


            m_catchSlaverRiders = new MyObjective(
                MyTextsWrapperEnum.LAST_HOPE_REACH_CATCH_SHIPS,
                MyMissionID.LAST_HOPE_CATCH_SLAVER_RIDERS,
                MyTextsWrapperEnum.LAST_HOPE_REACH_CATCH_SHIPS_DESC,
                null,
                this,
                new MyMissionID[] { MyMissionID.LAST_HOPE_DESTROY_SLAVER_RIDERS, },
                new MyMissionLocation(baseSector, (uint)EntityId.CatchSlaverRidersDummy)
                )
            {
                SaveOnSuccess = true, StartDialogId = MyDialogueEnum.LAST_HOPE_0400
            };
            m_catchSlaverRiders.Components.Add(new MySpawnpointWaves((uint)EntityId.CatchSlaverRidersDetector1, 1, new List <uint[]>()
            {
                new uint[] { (uint)EntityId.CatchSlaverRidersSpawn1 },
            }));
            m_catchSlaverRiders.Components.Add(new MySpawnpointWaves((uint)EntityId.CatchSlaverRidersDetector2, 1, new List <uint[]>()
            {
                new uint[] { (uint)EntityId.CatchSlaverRidersSpawn21 },
                new uint[] { (uint)EntityId.CatchSlaverRidersSpawn22 }
            }));
            m_catchSlaverRiders.OnMissionLoaded += CatchSlaverRiders_Loaded;
            m_objectives.Add(m_catchSlaverRiders);



            m_stopSlaverTransport = new MyObjectiveDestroy(
                MyTextsWrapperEnum.LAST_HOPE_REACH_STOP_SHIPS,
                MyMissionID.LAST_HOPE_STOP_SLAVER_RIDERS,
                MyTextsWrapperEnum.LAST_HOPE_REACH_STOP_SHIPS_DESC,
                null,
                this,
                new MyMissionID[] { MyMissionID.LAST_HOPE_CATCH_SLAVER_RIDERS },
                new List <uint>()
            {
                (uint)EntityId.StopSlaverTransportGenerator1, (uint)EntityId.StopSlaverTransportGenerator2
            }
                )
            {
                SaveOnSuccess = false, StartDialogId = MyDialogueEnum.LAST_HOPE_0500
            };
            m_movingShip1 = new MyMovingEntity((uint)EntityId.StopSlaverTransportShip1,
                                               (uint)EntityId.StopSlaverTransportShip1Target, StopSlaversObjectiveTime, false);

            m_movingShip2 = new MyMovingEntity((uint)EntityId.StopSlaverTransportShip2,
                                               (uint)EntityId.StopSlaverTransportShip2Target, StopSlaversObjectiveTime, false);

            m_movingShip1Particle = new MyMovingEntity((uint)EntityId.StopSlaverTransportShip1Particle,
                                                       (uint)EntityId.StopSlaverTransportShip1TargetParticle, StopSlaversObjectiveTime, false);

            m_movingShip2Particle = new MyMovingEntity((uint)EntityId.StopSlaverTransportShip2Particle,
                                                       (uint)EntityId.StopSlaverTransportShip2TargetParticle, StopSlaversObjectiveTime, false);

            m_stopSlaverTransport.Components.Add(m_movingShip1);
            m_stopSlaverTransport.Components.Add(m_movingShip2);
            m_stopSlaverTransport.Components.Add(m_movingShip1Particle);
            m_stopSlaverTransport.Components.Add(m_movingShip2Particle);
            m_stopSlaverTransport.OnMissionLoaded += StopSlaverTransport_Loaded;

            m_stopSlaverTransport.Components.Add(new MySpawnpointWaves((uint)EntityId.CatchSlaverRidersDummy, 1, new List <uint[]>()
            {
                new uint[] { (uint)EntityId.StopSlaverTransportSpawn11, (uint)EntityId.StopSlaverTransportSpawn21, },
                new uint[] { (uint)EntityId.StopSlaverTransportSpawn12, (uint)EntityId.StopSlaverTransportSpawn22, },
            }));
            m_objectives.Add(m_stopSlaverTransport);


            var speakWithFathetTobias = new MyObjectiveDialog
                                        (
                MyTextsWrapperEnum.LAST_HOPE_SPEAK_WITH_FATHER,
                MyMissionID.LAST_HOPE_SPEAK_WITH_FATHER,
                MyTextsWrapperEnum.LAST_HOPE_SPEAK_WITH_FATHER_DESC,
                null,
                this,
                new MyMissionID[] { MyMissionID.LAST_HOPE_STOP_SLAVER_RIDERS },
                MyDialogueEnum.LAST_HOPE_0600
                                        )
            {
                SaveOnSuccess = true
            };
            m_objectives.Add(speakWithFathetTobias);


            var reachCaves = new MyObjective(
                MyTextsWrapperEnum.LAST_HOPE_REACH_REACH_CAVE,
                MyMissionID.LAST_HOPE_REACH_UNDEGROUND_CAVES,
                MyTextsWrapperEnum.LAST_HOPE_REACH_REACH_CAVE_DESC,
                null,
                this,
                new MyMissionID[] { MyMissionID.LAST_HOPE_SPEAK_WITH_FATHER },
                new MyMissionLocation(baseSector, (uint)EntityId.ReachCavesLocation)

                )
            {
                SaveOnSuccess = true, StartDialogId = MyDialogueEnum.LAST_HOPE_0700, HudName = MyTextsWrapperEnum.HudCave
            };
            m_objectives.Add(reachCaves);


            m_findTunnel = new MyObjective(
                MyTextsWrapperEnum.LAST_HOPE_REACH_TUNNEL,
                MyMissionID.LAST_HOPE_FIND_MAINTANCE_TUNELL,
                MyTextsWrapperEnum.LAST_HOPE_REACH_TUNNEL_DESC,
                null,
                this,
                new MyMissionID[] { MyMissionID.LAST_HOPE_REACH_UNDEGROUND_CAVES },
                new MyMissionLocation(baseSector, (uint)EntityId.FindTunnelDummy)
                )
            {
                SaveOnSuccess = true, StartDialogId = MyDialogueEnum.LAST_HOPE_0800, HudName = MyTextsWrapperEnum.HudTunnel
            };
            m_findTunnel.Components.Add(new MySpawnpointWaves((uint)EntityId.ReachCavesLocation, 1, new List <uint[]>()
            {
                new uint[] { (uint)EntityId.FindTunnelSpawn1 },
                new uint[] { (uint)EntityId.FindTunnelSpawn2 },
                new uint[] { (uint)EntityId.FindTunnelSpawn3 },
            }));
            m_objectives.Add(m_findTunnel);


            var killSaboteurSquad = new MyDestroyWavesObjective
                                    (
                MyTextsWrapperEnum.LAST_HOPE_KILL_SABOTERS,
                MyMissionID.LAST_HOPE_KILL_SQUAD,
                MyTextsWrapperEnum.LAST_HOPE_KILL_SABOTERS,
                null,
                this,
                new MyMissionID[] { MyMissionID.LAST_HOPE_FIND_MAINTANCE_TUNELL }
                                    )
            {
                SaveOnSuccess = true
            };
            killSaboteurSquad.AddWave(new List <uint>()
            {
                (uint)EntityId.KillSaboteursSpawn
            });
            killSaboteurSquad.Components.Add(new MyDetectorDialogue((uint)EntityId.KillSabotersDetector, MyDialogueEnum.LAST_HOPE_1100));
            m_objectives.Add(killSaboteurSquad);



            var deactivateBombs = new MyMultipleUseObjective
                                      (MyTextsWrapperEnum.LAST_HOPE_DEACTIVATE_BOMBS,
                                      MyMissionID.LAST_HOPE_DEACTIVATE_BOMB,
                                      MyTextsWrapperEnum.LAST_HOPE_DEACTIVATE_BOMBS_DESC,
                                      null,
                                      this,
                                      new MyMissionID[] { MyMissionID.LAST_HOPE_KILL_SQUAD },
                                      MyTextsWrapperEnum.PressToDeactivateNuclearHead,
                                      MyTextsWrapperEnum.NuclearHead,
                                      MyTextsWrapperEnum.DeactivatingInProgress,
                                      5000,
                                      new List <uint>()
            {
                (uint)EntityId.DeactivateBombPrefab1, (uint)EntityId.DeactivateBombPrefab2
            },
                                      MyUseObjectiveType.Taking

                                      )
            {
                RadiusOverride = 30, SaveOnSuccess = true, StartDialogId = MyDialogueEnum.LAST_HOPE_1200
            };
            deactivateBombs.OnMissionLoaded    += DeactivateBombs_Loaded;
            deactivateBombs.OnObjectUsedSucces += DeactivateBombs_ObjectUsedSuccess;
            deactivateBombs.Components.Add(new MyDetectorDialogue((uint)EntityId.GasCloudsDetector, MyDialogueEnum.LAST_HOPE_1300));
            m_objectives.Add(deactivateBombs);



            m_repairPipes = new MyMultipleUseObjective
                                (MyTextsWrapperEnum.LAST_HOPE_STABILIZE_GAS,
                                MyMissionID.LAST_HOPE_REPAIR_PIPES,
                                MyTextsWrapperEnum.LAST_HOPE_STABILIZE_GAS_DESC,
                                null,
                                this,
                                new MyMissionID[] { MyMissionID.LAST_HOPE_DEACTIVATE_BOMB },
                                MyTextsWrapperEnum.PressToRepairGasPipe,
                                MyTextsWrapperEnum.GasPipe,
                                MyTextsWrapperEnum.ProgressRepairing,
                                5000,
                                new List <uint>()
            {
            },
                                MyUseObjectiveType.Repairing
                                )
            {
                SaveOnSuccess = true, RadiusOverride = 30, StartDialogId = MyDialogueEnum.LAST_HOPE_1400, SuccessDialogId = MyDialogueEnum.LAST_HOPE_1600
            };
            foreach (var gasPipe in m_gasPipes)
            {
                m_repairPipes.MissionEntityIDs.Add(gasPipe.Key);
            }
            m_repairPipes.OnObjectUsedSucces += RepairPipes_ObjectUsedSuccess;
            m_objectives.Add(m_repairPipes);



            var stabilizeNuclearCore = new MyMultipleUseObjective
                                       (
                MyTextsWrapperEnum.LAST_HOPE_STABILIZE_NUCLEAR_CORE,
                MyMissionID.LAST_HOPE_STABILIZE_NUCLEAR_CORE,
                MyTextsWrapperEnum.LAST_HOPE_STABILIZE_GAS_DESC,
                null,
                this,
                new MyMissionID[] { MyMissionID.LAST_HOPE_REPAIR_PIPES },
                MyTextsWrapperEnum.PressToRepairRadiation,
                MyTextsWrapperEnum.RadiationLeak,
                MyTextsWrapperEnum.Fixing,
                5000,
                new List <uint>()
            {
            },
                MyUseObjectiveType.Repairing
                                       )
            {
                RadiusOverride = 40, SaveOnSuccess = true
            };
            stabilizeNuclearCore.Components.Add(new MyDetectorDialogue((uint)EntityId.StabilizeCoreDialog1Dummy, MyDialogueEnum.LAST_HOPE_1700));
            stabilizeNuclearCore.Components.Add(new MyDetectorDialogue((uint)EntityId.StabilizeCoreDialog2Dummy, MyDialogueEnum.LAST_HOPE_1800));
            foreach (var core in m_nuclearCores)
            {
                stabilizeNuclearCore.MissionEntityIDs.Add(core.Key);
            }
            stabilizeNuclearCore.OnObjectUsedSucces += StabilizeNuclearCore_ObjectUsedSuccess;
            m_objectives.Add(stabilizeNuclearCore);


            var leaveUnderground = new MyObjective
                                   (
                MyTextsWrapperEnum.LAST_HOPE_LEAVE_SHAFTS,
                MyMissionID.LAST_HOPE_LEAVE_UNDERGROUND,
                MyTextsWrapperEnum.LAST_HOPE_LEAVE_SHAFTS_DESC,
                null,
                this,
                new MyMissionID[] { MyMissionID.LAST_HOPE_STABILIZE_NUCLEAR_CORE },
                new MyMissionLocation(baseSector, (uint)EntityId.LaveUndergroundDummy))
            {
                StartDialogId = MyDialogueEnum.LAST_HOPE_1900, HudName = MyTextsWrapperEnum.Nothing
            };
            leaveUnderground.OnMissionSuccess += LeaveUnderground_Success;
            m_objectives.Add(leaveUnderground);

            #endregion
        }
Example #9
0
        public MyReichstagCMission()
        {
            ID              = MyMissionID.REICHSTAG_C; /* ID must be added to MyMissions.cs */
            DebugName       = new StringBuilder("18c-Reichstag C");
            Name            = MyTextsWrapperEnum.REICHSTAG_C;
            Description     = MyTextsWrapperEnum.REICHSTAG_C_Description;
            Flags           = MyMissionFlags.Story;
            AchievementName = MySteamAchievementNames.Mission27_Reichstag2;

            MyMwcVector3Int baseSector = new MyMwcVector3Int(-2325831, 0, -7186381);

            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation);

            RequiredMissions           = new MyMissionID[] { MyMissionID.NAZI_BIO_LAB };
            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.REICHSTAG_C_MOTHERSHIP };
            RequiredActors             = new MyActorEnum[] { MyActorEnum.MADELYN, MyActorEnum.TARJA, MyActorEnum.VALENTIN };

            m_objectives = new List <MyObjective>();


            var MeetSubmission = new MyMeetObjective(
                (MyTextsWrapperEnum.REICHSTAG_C_FOR_Name),
                MyMissionID.REICHSTAG_C_FOR,
                (MyTextsWrapperEnum.REICHSTAG_C_FOR_Description),
                this,
                new MyMissionID[] { },
                null,
                (uint)EntityID.Bot_WaltherStauffenberg,
                100,
                0.25f,
                null
                )
            {
                SaveOnSuccess = true, FollowMe = false
            };

            /*  MeetSubmission.OnMissionSuccess += MeetSubmissionSuccess;
             * MeetSubmission.OnMissionLoaded += MeetSubmissionLoaded;*/
            m_objectives.Add(MeetSubmission);

            var colonelDialogue = new MyObjectiveDialog(
                MyMissionID.REICHSTAG_C_COLONEL_DIALOGUE,
                null,
                this,
                new MyMissionID[] { MyMissionID.REICHSTAG_C_FOR },
                dialogId: MyDialogueEnum.REICHSTAG_C_0100_OFFICER_TALK
                )
            {
                SaveOnSuccess = true
            };

            m_objectives.Add(colonelDialogue);

            var goToShipyard = new MyMeetObjective(
                (MyTextsWrapperEnum.REICHSTAG_C_GO_TO_SHIPYARD_Name),
                MyMissionID.REICHSTAG_C_GO_TO_SHIPYARD,
                (MyTextsWrapperEnum.REICHSTAG_C_GO_TO_SHIPYARD_Description),
                this,
                new MyMissionID[] { MyMissionID.REICHSTAG_C_COLONEL_DIALOGUE },
                null,
                (uint)EntityID.Bot_ShipyardOfficer,
                100,
                0.25f,
                null,
                startDialogueId: MyDialogueEnum.REICHSTAG_C_0200_ON_THE_WAY
                )
            {
                SaveOnSuccess = true, FollowMe = false
            };

            m_objectives.Add(goToShipyard);
            goToShipyard.OnMissionLoaded += GoToShipyardLoaded;

            var talkToSupplyOfficer = new MyObjectiveDialog(
                MyMissionID.REICHSTAG_C_TALK_TO_SUPPLY_OFFICER,
                null,
                this,
                new MyMissionID[] { MyMissionID.REICHSTAG_C_GO_TO_SHIPYARD },
                dialogId: MyDialogueEnum.REICHSTAG_C_0400_SUPPLY_OFFICER
                )
            {
                SaveOnSuccess = true
            };

            m_objectives.Add(talkToSupplyOfficer);

            var ChangeShip = new MyUseObjective(
                (MyTextsWrapperEnum.REICHSTAG_C_CHANGESHIP_Name),
                MyMissionID.REICHSTAG_C_CHANGESHIP,
                (MyTextsWrapperEnum.REICHSTAG_C_CHANGESHIP_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.REICHSTAG_C_TALK_TO_SUPPLY_OFFICER },
                new MyMissionLocation(baseSector, (uint)EntityID.Bot_Disabled_03),
                MyTextsWrapperEnum.PressToBoardShip,
                MyTextsWrapperEnum.Ship,
                MyTextsWrapperEnum.BoardingInProgress,
                3000,
                radiusOverride: 30,
                startDialogId: MyDialogueEnum.REICHSTAG_C_0500_REACHING_SHIPS
                );

            m_objectives.Add(ChangeShip);
            ChangeShip.OnMissionSuccess += ChangeShipOnOnMissionSuccess;

            var ShipChangedDialogue = new MyObjectiveDialog(
                MyMissionID.REICHSTAG_C_SHIP_CHANGED_DIALOGUE,
                null,
                this,
                new MyMissionID[] { MyMissionID.REICHSTAG_C_CHANGESHIP },
                dialogId: MyDialogueEnum.REICHSTAG_C_0600_SHIPS_PICKUPED
                )
            {
                SaveOnSuccess = true
            };

            m_objectives.Add(ShipChangedDialogue);

            var GetArmed = new MyObjectiveEnterInventory(
                (MyTextsWrapperEnum.REICHSTAG_C_WEAPONS_Name),
                MyMissionID.REICHSTAG_C_WEAPONS,
                (MyTextsWrapperEnum.REICHSTAG_C_WEAPONS_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.REICHSTAG_C_SHIP_CHANGED_DIALOGUE },
                (uint)EntityID.Objective_Shipchange,
                successDialogId: MyDialogueEnum.REICHSTAG_C_0800_SHOPPING_FINISHED
                );

            m_objectives.Add(GetArmed);
            GetArmed.OnMissionLoaded += GetArmedLoaded;

            var MeetTransporterCaptain = new MyMeetObjective(
                (MyTextsWrapperEnum.REICHSTAG_C_GO_TO_HANGAR_Name),
                MyMissionID.REICHSTAG_C_GO_TO_HANGAR,
                (MyTextsWrapperEnum.REICHSTAG_C_GO_TO_HANGAR_Description),
                this,
                new MyMissionID[] { MyMissionID.REICHSTAG_C_WEAPONS },
                null,
                (uint)EntityID.Bot_TransporterCaptain,
                100,
                0.25f,
                null
                )
            {
                SaveOnSuccess = true, FollowMe = false
            };

            m_objectives.Add(MeetTransporterCaptain);

            var TalkToTransporterCaptain = new MyObjectiveDialog(
                MyMissionID.REICHSTAG_C_TRANSPORTER_CAPTAIN_DIALOGUE,
                null,
                this,
                new MyMissionID[] { MyMissionID.REICHSTAG_C_GO_TO_HANGAR },
                dialogId: MyDialogueEnum.REICHSTAG_C_0900_TRANSPORTER_REACHED
                )
            {
                SaveOnSuccess = true
            };

            m_objectives.Add(TalkToTransporterCaptain);

            var GetWWMothership = new MyObjective(
                (MyTextsWrapperEnum.REICHSTAG_C_MOTHERSHIP_Name),
                MyMissionID.REICHSTAG_C_MOTHERSHIP,
                (MyTextsWrapperEnum.REICHSTAG_C_MOTHERSHIP_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.REICHSTAG_C_TRANSPORTER_CAPTAIN_DIALOGUE },
                new MyMissionLocation(baseSector, (uint)EntityID.Objective_Mothership),
                radiusOverride: 30
                )
            {
                HudName = MyTextsWrapperEnum.HudMothership
            };

            m_objectives.Add(GetWWMothership);
        }
        public MySmallPirateBase()
        {
            ID = MyMissionID.PIRATE_BASE_1; /* ID must be added to MyMissions.cs */
            Name = new StringBuilder("Small pirate base"); // Nazev mise
            Description = new StringBuilder( // popis mise
                "Destroy the station\n"
            );

            MyMwcVector3Int baseSector = new MyMwcVector3Int(14393995,0,2939339); // Story sector of the script

            Location = new MyMissionLocation(baseSector, 1649); // Starting dummy point

            RequiredMissions = new MyMissionID[] { }; // mise ktere musi byt splneny pred prijetim teto mise

            m_submissions = new List<MyObjective>(); // Creating of list of submissions
            // START DEFINICE SUBMISE


            /*DestroyPipes1 = new MySubmissionDestroy( // Var is used to call functions on that member
                new StringBuilder("Destroy pipes"),
                MyMissionID.NEW_STORY_M230_DESTROY_PIPES_1,
                new StringBuilder(""),
                null,
                this,
                new MyMissionID[] { },
                new List<uint> { 563, 1859, 415 },
                new List<uint> { },
                false
            ) { SaveOnSuccess = false };
            m_submissions.Add(DestroyPipes1); // pridani do seznamu submisi
            DestroyPipes1.OnMissionSuccess += new Missions.OnMissionSuccess(DestroyMSSuccess);*/

            var findCIC = new MyObjective( // One member of that list - je to MySubmission takze cilem je doletet do checkpointu
                new StringBuilder("Find the generator"), // nazev submise
                MyMissionID.PIRATE_BASE_1_DESTROY_PIPES_1, // id submise
                new StringBuilder(""), // popis submise
                null,
                this,
                new MyMissionID[] { }, // ID submisi ktere musi byt splneny - je to prazdne takze je to prvni submise
                new MyMissionLocation(baseSector, 2271) // ID of dummy point of checkpoint
            ) { SaveOnSuccess = false }; // nastaveni save na checkpointu nebo ne
            m_submissions.Add(findCIC); // pridani do seznamu submisi
        
            DestroyGenerator = new MyObjectiveDestroy( // Var is used to call functions on that member
                new StringBuilder("Destroy the generator"),
                MyMissionID.PIRATE_BASE_1_DESTROY_GENERATOR,
                new StringBuilder(""),
                null,
                this,
                new MyMissionID[] {  },
                new List<uint> { 328 },
                new List<uint> {  },
                false
            ) { SaveOnSuccess = false };
            m_submissions.Add(DestroyGenerator); // pridani do seznamu submisi
            DestroyGenerator.OnMissionSuccess += new MissionHandler(DestroyMSSuccess);

            var escape = new MyObjective( // One member of that list - je to MySubmission takze cilem je doletet do checkpointu
                new StringBuilder("Return to your mothership"), // nazev submise
                MyMissionID.SMALL_PIRATE_BASE_2_KILL_GENERAL, // id submise
                new StringBuilder(""), // popis submise
                null,
                this,
                new MyMissionID[] {MyMissionID.PIRATE_BASE_1_DESTROY_GENERATOR,MyMissionID.PIRATE_BASE_1_DESTROY_PIPES_1, }, // ID submisi ktere musi byt splneny - je to prazdne takze je to prvni submise
                new MyMissionLocation(baseSector, 18414)
            ) { SaveOnSuccess = false }; // nastaveni save na checkpointu nebo ne
            m_submissions.Add(escape); // pridani do seznamu submisi

                  


           
        }
Example #11
0
        public MyRimeBlueprintsMission()
        {
            ID          = MyMissionID.RIME_BLUEPRINTS;                                                                                 /* ID must be added to MyMissions.cs */
            Name        = new StringBuilder("11-Rime:Blueprints");                                                                     // Name of mission
            Description = new StringBuilder("Choose one of the entrances and sneak through the laboratory to steal the blueprints\n"); // Description of mission - do not forget to \n at the end of each line
            Flags       = MyMissionFlags.Story;

            MyMwcVector3Int baseSector = new MyMwcVector3Int(-1922856, 0, -2867519);      // Story sector of the script - i.e. (-2465,0,6541)

            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation);   // Starting dummy point - must by typecasted to uint and referenced from EntityID enum

            RequiredMissions           = new MyMissionID[] { MyMissionID.RIME_CONVINCE }; // IDs of missions required to make this mission available
            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.RIME_BLUEPRINTS_RETURN_TO_MOTHERSHIP };

            m_objectives = new List <MyObjective>(); // Creating of list of submissions

            // START OF REACH OBJECTIVE SUBMISSION DEFINITION
            m_entranceL = new MyObjective(              // One member of that list - its type defines the type of submission - MySubmission means fly to the dummypoint to success. Here it is var so you cannot call methods on it
                new StringBuilder("Enter the quarter"), // Name of the submission
                MyMissionID.RIME_BLUEPRINTS_ENTRANCE1,  // ID of the submission - must be added to MyMissions.cs
                new StringBuilder(""),                  // Description of the submission
                null,
                this,
                new MyMissionID[] { },                                      // ID of submissions required to make this submission available - it is clear so this submission is the starting submission
                new MyMissionLocation(baseSector, (uint)EntityID.EntranceL) // ID of dummy point of checkpoint
                )
            {
                SaveOnSuccess = false
            };                             // False means do not save game in that checkpoint
            m_objectives.Add(m_entranceL); // Adding this submission to the list of submissions of current mission
            // END OF REACH OBJECTIVE SUBMISSION DEFINITION

            // START OF REACH OBJECTIVE SUBMISSION DEFINITION
            m_entranceR = new MyObjective(                             // One member of that list - its type defines the type of submission - MySubmission means fly to the dummypoint to success. Here it is var so you cannot call methods on it
                new StringBuilder("Entry the quarter with the drone"), // Name of the submission
                MyMissionID.RIME_BLUEPRINTS_ENTRANCE2,                 // ID of the submission - must be added to MyMissions.cs
                new StringBuilder(""),                                 // Description of the submission
                null,
                this,
                new MyMissionID[] { },                                      // ID of submissions required to make this submission available - it is clear so this submission is the starting submission
                new MyMissionLocation(baseSector, (uint)EntityID.EntranceR) // ID of dummy point of checkpoint
                )
            {
                SaveOnSuccess = false
            };                             // False means do not save game in that checkpoint
            m_objectives.Add(m_entranceR); // Adding this submission to the list of submissions of current mission
            // END OF REACH OBJECTIVE SUBMISSION DEFINITION

            // START OF REACH OBJECTIVE SUBMISSION DEFINITION
            m_target = new MyObjectiveOptionalRequirements(
                new StringBuilder("Get the blueprints"),
                MyMissionID.RIME_BLUEPRINTS_TARGET,
                new StringBuilder("Sneak through the base and get the blueprints!\n"),
                null,
                this,
                new MyMissionID[] { },
                null,
                new MyMissionID[] { MyMissionID.RIME_BLUEPRINTS_ENTRANCE1, MyMissionID.RIME_BLUEPRINTS_ENTRANCE2 },
                1,
                new List <uint>()
            {
                (uint)EntityID.HUB
            }
                )
            {
                SaveOnSuccess = false
            };                               // False means do not save game in that checkpoint
            m_objectives.Add(m_target);
            // END OF REACH OBJECTIVE SUBMISSION DEFINITION

            m_flyExit = new MyObjective(                        // One member of that list - its type defines the type of submission - MySubmission means fly to the dummypoint to success. Here it is var so you cannot call methods on it
                new StringBuilder("Leave the laboratory"),      // Name of the submission
                MyMissionID.RIME_BLUEPRINTS_EXIT,               // ID of the submission - must be added to MyMissions.cs
                new StringBuilder("Use the emergency exit.\n"), // Description of the submission
                null,
                this,
                new MyMissionID[] { MyMissionID.RIME_BLUEPRINTS_TARGET }, // ID of submissions required to make this submission available - it is clear so this submission is the starting submission
                new MyMissionLocation(baseSector, (uint)EntityID.Exit)    // ID of dummy point of checkpoint
                )
            {
                SaveOnSuccess = false
            };                               // False means do not save game in that checkpoint
            m_objectives.Add(m_flyExit);

            var returnToFrancis = new MyObjective(                                // One member of that list - its type defines the type of submission - MySubmission means fly to the dummypoint to success. Here it is var so you cannot call methods on it
                new StringBuilder("Get back to Francis"),                         // Name of the submission
                MyMissionID.RIME_BLUEPRINTS_RETURN_TO_FRANCIS,                    // ID of the submission - must be added to MyMissions.cs
                new StringBuilder("Bring the blueprints back to Francis Reef\n"), // Description of the submission
                null,
                this,
                new MyMissionID[] { MyMissionID.RIME_BLUEPRINTS_EXIT },  // ID of submissions required to make this submission available - it is clear so this submission is the starting submission
                new MyMissionLocation(baseSector, (uint)EntityID.Return) // ID of dummy point of checkpoint
                )
            {
                SaveOnSuccess = false
            };                               // False means do not save game in that checkpoint

            m_objectives.Add(returnToFrancis);

            var returnToMothership = new MyObjective(             // One member of that list - its type defines the type of submission - MySubmission means fly to the dummypoint to success. Here it is var so you cannot call methods on it
                new StringBuilder("Return to your mothership"),   // Name of the submission
                MyMissionID.RIME_BLUEPRINTS_RETURN_TO_MOTHERSHIP, // ID of the submission - must be added to MyMissions.cs
                new StringBuilder(""),                            // Description of the submission
                null,
                this,
                new MyMissionID[] { MyMissionID.RIME_BLUEPRINTS_RETURN_TO_FRANCIS }, // ID of submissions required to make this submission available - it is clear so this submission is the starting submission
                new MyMissionLocation(baseSector, (uint)EntityID.ReturnToMothership) // ID of dummy point of checkpoint
                )
            {
                SaveOnSuccess = false
            };                              // False means do not save game in that checkpoint

            m_objectives.Add(returnToMothership);
        }
        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 MyJunkyardEACAmbushMission()
        {
            ID             = MyMissionID.JUNKYARD_EAC_AMBUSH;    /* ID must be added to MyMissions.cs */
            DebugName      = new StringBuilder("13-EAC ambush"); // Name of mission
            Name           = MyTextsWrapperEnum.JUNKYARD_EAC_AMBUSH;
            Description    = MyTextsWrapperEnum.JUNKYARD_EAC_AMBUSH_Description;
            Flags          = MyMissionFlags.Story;
            RequiredActors = new MyActorEnum[] { MyActorEnum.MADELYN, MyActorEnum.MARCUS, MyActorEnum.TARJA, MyActorEnum.VALENTIN };
            MyMwcVector3Int baseSector = new MyMwcVector3Int(2567538, 0, -172727);          // Story sector of the script - i.e. (-2465,0,6541)

            Location = new MyMissionLocation(baseSector, (uint)EntityID.PlayerStart);       // Starting dummy point - must by typecasted to uint and referenced from EntityID enum

            RequiredMissions           = new MyMissionID[] { MyMissionID.RESEARCH_VESSEL }; // IDs of missions required to make this mission available
            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.JUNKYARD_EAC_AMBUSH_DEFEND_MADELYN };

            Components.Add(new MySpawnpointLimiter(m_spawns, 7));

            #region Objectives
            m_objectives = new List <MyObjective>(); // Creating of list of submissions
            var flyToManjeet = new MyMeetObjective(
                MyTextsWrapperEnum.EAC_AMBUSH_FLY_TO_MANJEET,
                MyMissionID.JUNKYARD_EAC_AMBUSH_FLY_MANJEET,
                MyTextsWrapperEnum.EAC_AMBUSH_FLY_TO_MANJEET_DESC,
                this,
                new MyMissionID[] { },
                null,
                (uint)EntityID.FlyToManjeet,
                100,
                0.25f,
                null,
                MyDialogueEnum.EAC_AMBUSH_0100_INTRO
                )
            {
                SaveOnSuccess = false, FollowMe = false
            };
            flyToManjeet.OnMissionLoaded += FlyToManjeet_Loaded;
            m_objectives.Add(flyToManjeet);

            var speakToManjeet = new MyObjectiveDialog(
                MyMissionID.JUNKYARD_EAC_AMBUSH_TALK_RANIJT,
                null,
                this,
                new MyMissionID[] { MyMissionID.JUNKYARD_EAC_AMBUSH_FLY_MANJEET },
                MyDialogueEnum.EAC_AMBUSH_0200_MANJEET
                )
            {
                SaveOnSuccess = false
            };
            speakToManjeet.OnMissionLoaded += SpeakToManjeet_Loaded;
            m_objectives.Add(speakToManjeet);

            m_backToMadelyn = new MyObjective(
                MyTextsWrapperEnum.EAC_AMBUSH_GO_BACK_TO_MADELYN,
                MyMissionID.JUNKYARD_EAC_AMBUSH_GO_BACK_TO_MADELYN,
                MyTextsWrapperEnum.EAC_AMBUSH_GO_BACK_TO_MADELYN_DESC,
                null,
                this,
                new MyMissionID[] { MyMissionID.JUNKYARD_EAC_AMBUSH_TALK_RANIJT },
                new MyMissionLocation(baseSector, (uint)EntityID.GoBackToMadelyn),
                startDialogId: MyDialogueEnum.EAC_AMBUSH_0300_GUYS_HURRY_UP
                )
            {
                HudName = MyTextsWrapperEnum.Nothing
            };
            m_backToMadelyn.OnMissionLoaded += BackToMadelyn_Loaded;
            m_objectives.Add(m_backToMadelyn);

            m_speakWithPolice = new MyObjective(
                MyTextsWrapperEnum.Null,
                MyMissionID.JUNKYARD_EAC_AMBUSH_SPEAK_POLICE,
                MyTextsWrapperEnum.Null,
                null,
                this,
                new MyMissionID[] { MyMissionID.JUNKYARD_EAC_AMBUSH_GO_BACK_TO_MADELYN },
                null
                );
            m_speakWithPolice.OnMissionLoaded += SpeakWithPolice_Loaded;
            m_objectives.Add(m_speakWithPolice);

            m_defendMadelyn = new MyObjectiveDialog(
                MyTextsWrapperEnum.EAC_AMBUSH_DEFEND_MADELYN1,
                MyMissionID.JUNKYARD_EAC_AMBUSH_DEFEND_MADELYN_1,
                MyTextsWrapperEnum.EAC_AMBUSH_DEFEND_MADELYN1_DESC,
                null,
                this,
                new MyMissionID[] { MyMissionID.JUNKYARD_EAC_AMBUSH_SPEAK_POLICE },
                MyDialogueEnum.EAC_AMBUSH_0500_ONE_LITTLE_ISSUE
                )
            {
                SaveOnSuccess = true
            };
            m_defendMadelyn.OnMissionLoaded += DefendMadelyn_Loaded;
            m_objectives.Add(m_defendMadelyn);

            var destroyGenerator = new MyObjectiveDestroy(
                MyTextsWrapperEnum.EAC_AMBUSH_DESTROY_GENERATOR,
                MyMissionID.JUNKYARD_EAC_AMBUSH_DESTROY_GENERATOR,
                MyTextsWrapperEnum.EAC_AMBUSH_DESTROY_GENERATOR_DESC,
                null,
                this,
                new MyMissionID[] { MyMissionID.JUNKYARD_EAC_AMBUSH_DEFEND_MADELYN_1 },
                new List <uint> {
                (uint)EntityID.DestroyGenerator
            }
                )
            {
                SaveOnSuccess = true, StartDialogId = MyDialogueEnum.EAC_AMBUSH_0700_SPLIT_TO_DESTROY_GENERATORS, HudName = MyTextsWrapperEnum.HudDisruptor
            };
            destroyGenerator.OnMissionLoaded  += DestroyGenerator_Loaded;
            destroyGenerator.OnMissionSuccess += DestroyGenerator_Success;
            m_objectives.Add(destroyGenerator);

            var returnToMadelyn = new MyTimedReachLocationObjective(
                MyTextsWrapperEnum.EAC_AMBUSH_RETURN_TO_MADELYN,
                MyMissionID.JUNKYARD_EAC_AMBUSH_RETUR_TO_MADELYN,
                MyTextsWrapperEnum.EAC_AMBUSH_RETURN_TO_MADELYN_DESC,
                null,
                this,
                new MyMissionID[] { MyMissionID.JUNKYARD_EAC_AMBUSH_DESTROY_GENERATOR },
                new TimeSpan(0, 0, 45),
                new MyMissionLocation(baseSector, (uint)EntityID.ReturnToMadelyn)
                )
            {
                SaveOnSuccess = true, StartDialogId = MyDialogueEnum.EAC_AMBUSH_1000, HudName = MyTextsWrapperEnum.HudMadelynsSapho
            };
            returnToMadelyn.OnMissionLoaded += ReturnToMadelyn_Loaded;
            m_objectives.Add(returnToMadelyn);

            m_defendMadelyn2 = new MyObjective(
                MyTextsWrapperEnum.EAC_AMBUSH_DEFEND_MADELYN2,
                MyMissionID.JUNKYARD_EAC_AMBUSH_DEFEND_MADELYN,
                MyTextsWrapperEnum.EAC_AMBUSH_DEFEND_MADELYN2_DESC,
                null,
                this,
                new MyMissionID[] { MyMissionID.JUNKYARD_EAC_AMBUSH_RETUR_TO_MADELYN },
                null
                )
            {
                StartDialogId = MyDialogueEnum.EAC_AMBUSH_1200_1300
            };
            m_defendMadelyn2.OnMissionLoaded += DefendMadelyn2_Loaded;
            m_defendMadelyn2.OnMissionUpdate += DefendMadelyn2_Update;
            m_objectives.Add(m_defendMadelyn2);

            #endregion
        }
        public MyJunkyardReturnMission()
        {
            ID = MyMissionID.JUNKYARD_RETURN; /* ID must be added to MyMissions.cs */
            Name = MyTextsWrapperEnum.JUNKYARD_RETURN;
            Description = MyTextsWrapperEnum.JUNKYARD_RETURN_Description; //"Return to Ranjit with stolen Cargoship\n"
            DebugName = new StringBuilder("08e-Junkyard racing"); // Name of mission
            Flags = MyMissionFlags.Story;
            AchievementName = MySteamAchievementNames.Mission12_JunkyardRacing;

            MyMwcVector3Int baseSector = new MyMwcVector3Int(2567538,0,-172727); // Story sector of the script - i.e. (-2465,0,6541)

            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation); // Starting dummy point - must by typecasted to uint and referenced from EntityID enum

            RequiredMissions = new MyMissionID[] { MyMissionID.CHINESE_ESCAPE }; // IDs of missions required to make this mission available
            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.JUNKYARD_RETURN_DIALOGUE_RETURN };
            RequiredActors = new MyActorEnum[] { MyActorEnum.MARCUS, MyActorEnum.MADELYN, MyActorEnum.TARJA, MyActorEnum.VALENTIN };

            #region Objectives
            m_objectives = new List<MyObjective>(); // Creating of list of submissions

            var meetManjeet = new MyObjective(
                (MyTextsWrapperEnum.JUNKYARD_RETURN_MEET_SMUGGLER_Name),
                MyMissionID.JUNKYARD_RETURN_MEET_SMUGGLER,
                (MyTextsWrapperEnum.JUNKYARD_RETURN_MEET_SMUGGLER_Description),
                null,
                this,
                new MyMissionID[] {},
                new MyMissionLocation(baseSector, (uint) EntityID.Manjeet),
                new List<uint> {(uint) EntityID.Manjeet},
                radiusOverride: 50
                ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudManjeet };
            m_objectives.Add(meetManjeet);
            meetManjeet.OnMissionLoaded += O01MeetSmugglerLoaded;


            var manjeetDialogue = new MyObjectiveDialog(
                MyMissionID.JUNKYARD_RETURN_SMUGGLER_DIALOGUE,
                null,
                this,
                new MyMissionID[] { MyMissionID.JUNKYARD_RETURN_MEET_SMUGGLER },
                MyDialogueEnum.JUNKYARD_RETURN_0200
                ) { SaveOnSuccess = true };
            manjeetDialogue.OnMissionSuccess += new MissionHandler(manjeetDialogue_OnMissionSuccess);
            m_objectives.Add(manjeetDialogue);

            var speedsterDialogue = new MyObjective(
                MyTextsWrapperEnum.Null,
                MyMissionID.JUNKYARD_RETURN_SPEEDSTER_DIALOGUE,
                MyTextsWrapperEnum.Null,
                null,
                this,
                new MyMissionID[] { MyMissionID.JUNKYARD_RETURN_SMUGGLER_DIALOGUE },
                null
                ) { SaveOnSuccess = true };
            speedsterDialogue.OnMissionLoaded += O02SmugglerDialogueLoaded;
            m_objectives.Add(speedsterDialogue);

            m_objective03_FlyToStart = new MyObjective(
                (MyTextsWrapperEnum.JUNKYARD_RETURN_FLY_TO_START_Name),
                MyMissionID.JUNKYARD_RETURN_FLY_TO_START,
                (MyTextsWrapperEnum.JUNKYARD_RETURN_FLY_TO_START_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.JUNKYARD_RETURN_SPEEDSTER_DIALOGUE },
                null,
                startDialogId: MyDialogueEnum.JUNKYARD_RETURN_0300
            ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudStart };
            m_objective03_FlyToStart.MissionEntityIDs.Add((uint)EntityID.DetectorStartRacePosition);
            m_objective03_FlyToStart.OnMissionLoaded += O03FlyToStartLoaded;
            m_objective03_FlyToStart.OnMissionCleanUp += O03FlyToStartCleanUp;
            m_objectives.Add(m_objective03_FlyToStart);


            m_objective04_Race = new MyObjectiveRace(
                (MyTextsWrapperEnum.JUNKYARD_RETURN_RACE_Name),
                (MyTextsWrapperEnum.JUNKYARD_RETURN_RACE_PrepareName),
                (MyTextsWrapperEnum.JUNKYARD_RETURN_RACE_GoBackName),
                MyMissionID.JUNKYARD_RETURN_RACE,
                (MyTextsWrapperEnum.JUNKYARD_RETURN_RACE_Description),
                null,
                this,
                new MyMissionID[]{ MyMissionID.JUNKYARD_RETURN_FLY_TO_START },
                baseSector,
                m_raceCheckpoints,
                (uint)EntityID.DetectorStartRacePosition2
            ) { SaveOnSuccess = true} ;
            m_objective04_Race.RacerNames = new List<string> { "Racer2", "Racer3", "Challenger" };
            m_objective04_Race.BotLoaded += Race_BotLoaded;
            m_objective04_Race.OnMissionLoaded += O04RaceLoaded;
            m_objective04_Race.OnMissionFailed += RaceMissionFailed;
            m_objective04_Race.OnMissionSuccess += Objective04_RaceOnOnMissionSuccess;
            m_objective04_Race.CheckpointReached += RaceMissonOnCheckpointReached;
            m_objective04_Race.OnStartNumberChanged += RaceStartNumberChanged;
            m_objective04_Race.RaceStarted = RaceStarted;
            m_objectives.Add(m_objective04_Race);

            m_objective05_Win = new MyObjectiveDialog(
                (MyTextsWrapperEnum.JUNKYARD_RETURN_WIN_Name),
                MyMissionID.JUNKYARD_RETURN_WIN,
                (MyTextsWrapperEnum.JUNKYARD_RETURN_WIN_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.JUNKYARD_RETURN_RACE },
                MyDialogueEnum.JUNKYARD_RETURN_1300
            ) { SaveOnSuccess = false };
            m_objectives.Add(m_objective05_Win);
            m_objective05_Win.OnMissionLoaded += O05WinLoaded;


            m_objective06_GoToSmuggler = new MyMeetObjective(
                (MyTextsWrapperEnum.JUNKYARD_RETURN_GO_TO_SMUGGLER_name),
                MyMissionID.JUNKYARD_RETURN_GO_TO_SMUGGLER,
                (MyTextsWrapperEnum.JUNKYARD_RETURN_GO_TO_SMUGGLER_Description),
                this,
                new MyMissionID[] { MyMissionID.JUNKYARD_RETURN_WIN },
                null,
                (uint)EntityID.Manjeet,
                100,
                0.25f,
                null
                ) { SaveOnSuccess = true, FollowMe = false };
            m_objectives.Add(m_objective06_GoToSmuggler);


            m_objective07_SmugglerDialogueReturn = new MyObjectiveDialog(
                (MyTextsWrapperEnum.JUNKYARD_RETURN_DIALOGUE_RETURN_Name),
                MyMissionID.JUNKYARD_RETURN_DIALOGUE_RETURN,
                (MyTextsWrapperEnum.JUNKYARD_RETURN_DIALOGUE_RETURN_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.JUNKYARD_RETURN_GO_TO_SMUGGLER},
                dialogId: MyDialogueEnum.JUNKYARD_RETURN_1400
            ) { SaveOnSuccess = false };
            m_objectives.Add(m_objective07_SmugglerDialogueReturn);

            m_objective07_SmugglerDialogueReturn.OnMissionLoaded += O07SmugglerDialogueReturnLoaded;

            #endregion
        }
        public MyFortValiantMissionB()
            : base()
        {
            ID                         = MyMissionID.FORT_VALIANT_B;              /* ID must be added to MyMissions.cs */
            DebugName                  = new StringBuilder("09c-Fort Valiant B"); // Name of mission
            Name                       = MyTextsWrapperEnum.FORT_VALIANT_B;
            Description                = MyTextsWrapperEnum.FORT_VALIANT_B_Description;
            RequiredActors             = new MyActorEnum[] { MyActorEnum.MADELYN, MyActorEnum.MARCUS, MyActorEnum.TARJA, MyActorEnum.VALENTIN };
            RequiredMissions           = new MyMissionID[] { MyMissionID.SLAVER_BASE_1 };
            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.FORT_VALIANT_B_VISIT_VENDOR };
            m_objectives               = new List <MyObjective>(); // Creating of list of submissions


            var flyOne = new MyObjective(
                (MyTextsWrapperEnum.FORT_VALIANT_B_FLY_ONE_Name),
                MyMissionID.FORT_VALIANT_B_FLY_ONE,
                (MyTextsWrapperEnum.FORT_VALIANT_B_FLY_ONE_Description),
                null,
                this,
                new MyMissionID[] { },
                new MyMissionLocation(baseSector, (uint)EntityID.DetecorGateKeeper),
                null,
                null,
                MyDialogueEnum.FORT_VALIANT_B_0100)
            {
                SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudFortValiant
            };

            m_objectives.Add(flyOne);

            /*
             * var speakGateKeeper = new MyMeetObjective(
             *  new StringBuilder("Reach the gate of Fort Valiant"),
             *  MyMissionID.FORT_VALIANT_B_SPEAK_GATE_KEEPER,
             *  new StringBuilder(""),
             *  this,
             *  new MyMissionID[] { MyMissionID.FORT_VALIANT_FLY_ONE },
             *  (uint)EntityID.DetecorGateKeeper,
             *  (uint)EntityID.GateKeeper,
             *  25,
             *  0.25f,
             *  dialog3,
             *  dialog2
             *  ) { SaveOnSuccess = true };
             * m_objectives.Add(speakGateKeeper);
             *
             */

            var speakCaptain = new MyMeetObjective(
                (MyTextsWrapperEnum.FORT_VALIANT_B_MEET_CAPTAIN_Name),
                MyMissionID.FORT_VALIANT_B_MEET_CAPTAIN,
                (MyTextsWrapperEnum.FORT_VALIANT_B_MEET_CAPTAIN_Description),
                this,
                new MyMissionID[] { MyMissionID.FORT_VALIANT_B_FLY_ONE },
                (uint)EntityID.DetectorCaptain,
                (uint)EntityID.Captain,
                50,
                0.25f,
                MyDialogueEnum.FORT_VALIANT_B_0200,
                null,
                false
                )
            {
                SaveOnSuccess = true, FollowMe = false
            };

            m_objectives.Add(speakCaptain);
            speakCaptain.OnMissionSuccess += SpeakCaptainOnOnMissionSuccess;

            m_visitVendor = new MyObjectiveEnterInventory(
                (MyTextsWrapperEnum.FORT_VALIANT_B_VISIT_VENDOR_Name),
                MyMissionID.FORT_VALIANT_B_VISIT_VENDOR,
                (MyTextsWrapperEnum.FORT_VALIANT_B_VISIT_VENDOR_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.FORT_VALIANT_B_MEET_CAPTAIN },
                (uint)EntityID.VendorB,
                null,
                null
                );
            m_objectives.Add(m_visitVendor);
            m_visitVendor.OnMissionLoaded += MVisitVendorOnOnMissionLoaded;

            /*
             * var flyToMadelyn = new MyObjective(
             * new StringBuilder("Meet your mothership close to the Templar cargo bay"),
             * MyMissionID.FORT_VALIANT_B_FLY_BACK_MADELYN,
             * new StringBuilder(""),
             * null,
             * this,
             * new MyMissionID[] { MyMissionID.FORT_VALIANT_B_VISIT_VENDOR },
             * new MyMissionLocation(baseSector, MyMissionLocation.MADELYN_HANGAR)
             * );
             * m_objectives.Add(flyToMadelyn);
             */
        }
        public MyEACPrisonMission()
        {
            ID = MyMissionID.EAC_PRISON; /* ID must be added to MyMissions.cs */
            DebugName = new StringBuilder("20-EAC prison");
            Name = MyTextsWrapperEnum.EAC_PRISON;
            Description = MyTextsWrapperEnum.EAC_PRISON_Description;
            Flags = MyMissionFlags.Story;
            AchievementName = MySteamAchievementNames.Mission29_EacPrison;

            MyMwcVector3Int baseSector = new MyMwcVector3Int(5480055, 0, -5077310);

            /* sector where the mission is located */
            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation); //posledne cislo - ID dummy pointu kde prijimam misiu

            RequiredMissions = new MyMissionID[] { MyMissionID.TWIN_TOWERS };
            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.EAC_PRISON_MEETINGPOINT };
            RequiredActors = new MyActorEnum[] { MyActorEnum.TARJA, MyActorEnum.VALENTIN, MyActorEnum.MADELYN, MyActorEnum.MARCUS };
            
            m_objectives = new List<MyObjective>();

            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeStorage, 0, (uint)EntityID.SpawnpointAtStorage));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeIndustry, 0, (uint)EntityID.SpawnpointAtIndustry1));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeIndustry, 0, (uint)EntityID.SpawnpointAtIndustry2));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeParking, 0, (uint)EntityID.SpawnpointAtParking));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeMines, 0, (uint)EntityID.SpawnpointAtMines));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeMinesEntrance, 0, (uint)EntityID.SpawnpointAtMinesEntrance));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeMarcusCell, 0, (uint)EntityID.SpawnpointAtMarcusCell));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeSecurityCheck7, 0, (uint)EntityID.SpawnpointAtSecurityCheck7));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeSecurityCheck6, 0, (uint)EntityID.SpawnpointAtSecurityCheck6));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeSecurityCheck8, 0, (uint)EntityID.SpawnpointAtSecurityCheck8));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeSecurityCheck4, 0, (uint)EntityID.SpawnpointAtSecurityCheck4));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeCellAfterSecurityCheck4, 0, (uint)EntityID.SpawnpointAtCellAfterSecurityCheck4));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeSecurityCheck5, 0, (uint)EntityID.SpawnpointAtSecurityCheck5));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeCell1AfterSecurityCheck5, 0, (uint)EntityID.SpawnpointAtCell1AfterSecurityCheck5));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeCell2AfterSecurityCheck5, 0, (uint)EntityID.SpawnpointAtCell2AfterSecurityCheck5));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeCell3AfterSecurityCheck5, 0, (uint)EntityID.SpawnpointAtCell3AfterSecurityCheck5));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeSecurityCheck3, 0, (uint)EntityID.SpawnpointAtSecurityCheck3));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeCell1AfterSecurityCheck3, 0, (uint)EntityID.SpawnpointAtCell1AfterSecurityCheck3));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeCell2AfterSecurityCheck3, 0, (uint)EntityID.SpawnpointAtCell2AfterSecurityCheck3));

            //Components.Add(new MySpawnpointWaves(detectorId, 3, new List<uint[]> { 
            //    new uint[] { spawnpointId1, spawnpointId2, spawnpointId3 },
            //    new uint[] { spawnpointId4, spawnpointId5 }}));
                        
            //01
            var mothershipBattle = new MyObjective(
                (MyTextsWrapperEnum.EAC_PRISON_THRUSWARM_Name),
                MyMissionID.EAC_PRISON_THRUSWARM,
                (MyTextsWrapperEnum.EAC_PRISON_THRUSWARM_Description),
                null,
                this,
                new MyMissionID[] {},
                new MyMissionLocation(baseSector, (uint)EntityID.MotherShiBattleLocationDummy)
                ) {SaveOnSuccess = true,StartDialogId = MyDialogueEnum.EAC_PRISON_0100, SuccessDialogId = MyDialogueEnum.EAC_PRISON_0200};
            m_objectives.Add(mothershipBattle);
            //mothershipBattle.Components.Add(new MySpawnpointWaves(77073, 0, 76625));
            mothershipBattle.OnMissionLoaded += mothershipBattle_OnMissionLoaded;

            //02
            
            var destroySolarDefence = new MyObjectiveDestroy(
                (MyTextsWrapperEnum.EAC_PRISON_SOLARDEF_Name),
                MyMissionID.EAC_PRISON_SOLARDEF,
                (MyTextsWrapperEnum.EAC_PRISON_SOLARDEF_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.EAC_PRISON_THRUSWARM },
                m_02toKill
            ) { SaveOnSuccess = true,StartDialogId = MyDialogueEnum.EAC_PRISON_0300};
            destroySolarDefence.OnMissionSuccess += DestroySolarDefenceOnOnMissionSuccess;
            m_objectives.Add(destroySolarDefence);
            destroySolarDefence.OnMissionLoaded += destroySolarDefence_OnMissionLoaded;

            //03
            m_destroySolarPanelsFirst = new MyObjective(
                (MyTextsWrapperEnum.EAC_PRISON_SOLAROFF1_Name),
                MyMissionID.EAC_PRISON_SOLAROFF1,
                (MyTextsWrapperEnum.EAC_PRISON_SOLAROFF1_Description),
                null,
                this,
                new MyMissionID[] {MyMissionID.EAC_PRISON_SOLARDEF},
                null
                ) {SaveOnSuccess = false};
            m_destroySolarPanelsFirst.OnMissionLoaded += DestroySolarPanelsFirstSubmissionLoaded;
            m_destroySolarPanelsFirst.OnMissionSuccess += DestroySolarPanelsFirstSubmissionSuccess;
            m_objectives.Add(m_destroySolarPanelsFirst);
            m_destroySolarPanelsFirst.SaveOnSuccess = true;

            //04
            var motherShipHelp = new MyObjectiveDestroy(
                (MyTextsWrapperEnum.EAC_PRISON_MOTHERSHIPHELP_Name),
                MyMissionID.EAC_PRISON_MOTHERSHIPHELP,
                (MyTextsWrapperEnum.EAC_PRISON_MOTHERSHIPHELP_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.EAC_PRISON_SOLAROFF1 },
                m_04toKill
            ) { SaveOnSuccess = false, StartDialogId = MyDialogueEnum.EAC_PRISON_0400, SuccessDialogId = MyDialogueEnum.EAC_PRISON_0500};
            m_objectives.Add(motherShipHelp);
            motherShipHelp.OnMissionLoaded += new MissionHandler(motherShipHelp_OnMissionLoaded);

                        //05
            m_destroySolarPanelsSecond = new MyObjective(
                (MyTextsWrapperEnum.EAC_PRISON_SOLAROFF2_Name),
                MyMissionID.EAC_PRISON_SOLAROFF2,
                (MyTextsWrapperEnum.EAC_PRISON_SOLAROFF2_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.EAC_PRISON_MOTHERSHIPHELP },
                null
            ) { SaveOnSuccess = true,};
            m_destroySolarPanelsSecond.OnMissionLoaded += DestroySolarPanelsSecondSubmissionLoaded;
            m_destroySolarPanelsSecond.OnMissionSuccess += DestroySolarPanelsSecondSubmissionSuccess;
            m_objectives.Add(m_destroySolarPanelsSecond);
            
            //06
            var breakInsideStation = new MyTimedReachLocationObjective(
               (MyTextsWrapperEnum.EAC_PRISON_BREAKIN_Name),
               MyMissionID.EAC_PRISON_BREAKIN,
               (MyTextsWrapperEnum.EAC_PRISON_BREAKIN_Description),
               null,
               this,
               new MyMissionID[] { MyMissionID.EAC_PRISON_SOLAROFF2 },
               new System.TimeSpan(0, 1, 0),
               new MyMissionLocation(baseSector,(uint) EntityID.BreakInsideStationLocationDummy)
           ) { SaveOnSuccess = true, StartDialogId = MyDialogueEnum.EAC_PRISON_0600, HudName = MyTextsWrapperEnum.HudCargoBay };
            breakInsideStation.OnMissionSuccess += BreakInsideStationSubmissionSuccess;
            breakInsideStation.OnMissionLoaded += BreakInsideStationOnOnMissionLoaded;
            m_objectives.Add(breakInsideStation);
            
            //07
            var marcusLocationIntel = new MyUseObjective(
                   (MyTextsWrapperEnum.EAC_PRISON_LOCINTEL_Name),
                   MyMissionID.EAC_PRISON_LOCINTEL,
                   (MyTextsWrapperEnum.EAC_PRISON_LOCINTEL_Description),
                   null,
                   this,
                   new MyMissionID[] { MyMissionID.EAC_PRISON_BREAKIN },
                   new MyMissionLocation(baseSector, (uint)EntityID._MarcusIntelLocation),
                   MyTextsWrapperEnum.PressToDownloadData,
                   MyTextsWrapperEnum.Console,
                   MyTextsWrapperEnum.DownloadingData,
                   5000,
                   MyUseObjectiveType.Hacking
                ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudSecurityHub };

            m_objectives.Add(marcusLocationIntel);
            marcusLocationIntel.OnMissionLoaded += new MissionHandler(marcusLocationIntel_OnMissionLoaded);
            marcusLocationIntel.OnMissionSuccess += MarcusLocationIntelOnOnMissionSuccess;
            marcusLocationIntel.Components.Add(new MySpawnpointLimiter(m_spawns, 6));
            
            //08
            m_findCircoutPart = new MyUseObjective(
                    (MyTextsWrapperEnum.EAC_PRISON_ACQUIREIDCARD_Name),
                    MyMissionID.EAC_PRISON_ACQUIREIDCARD,
                    (MyTextsWrapperEnum.EAC_PRISON_ACQUIREIDCARD_Description),
                    null,
                    this,
                    new MyMissionID[] { MyMissionID.EAC_PRISON_LOCINTEL},
                    new MyMissionLocation(baseSector, (uint)EntityID.CargoIDCard),
                    MyTextsWrapperEnum.PressToTakeCargo,
                    MyTextsWrapperEnum.TakeAll,
                    MyTextsWrapperEnum.TakeAll,
                    2000,
                    MyUseObjectiveType.Taking,
                    radiusOverride: 50
            ) { SaveOnSuccess = true, StartDialogId = MyDialogueEnum.EAC_PRISON_0700, HudName = MyTextsWrapperEnum.HudIdCard };

            m_findCircoutPart.OnMissionLoaded += OnFindCircuitLoaded;
            m_findCircoutPart.OnMissionSuccess += new MissionHandler(m_findCircoutPart_OnMissionSuccess);
            m_objectives.Add(m_findCircoutPart);


            var marcusLocationIntel2 = new MyUseObjective(
               (MyTextsWrapperEnum.EAC_PRISON_LOCINTEL2_Name),
               MyMissionID.EAC_PRISON_LOCINTEL2,
               (MyTextsWrapperEnum.EAC_PRISON_LOCINTEL2_Description),
               null,
               this,
               new MyMissionID[] { MyMissionID.EAC_PRISON_ACQUIREIDCARD },
               new MyMissionLocation(baseSector, (uint)EntityID._MarcusIntelLocation),
               MyTextsWrapperEnum.PressToDownloadData,
               MyTextsWrapperEnum.Console,
               MyTextsWrapperEnum.DownloadingData,
               5000,
               MyUseObjectiveType.Hacking
            ) { SaveOnSuccess = true, SuccessDialogId = MyDialogueEnum.EAC_PRISON_0900, StartDialogId = MyDialogueEnum.EAC_PRISON_0800, HudName = MyTextsWrapperEnum.HudSecurityHub };

            m_objectives.Add(marcusLocationIntel2);
            
            //09
            var openDoors = new MyObjectiveEnablePrefabs(
                (MyTextsWrapperEnum.EAC_PRISON_OPENACCESS_Name),
                MyMissionID.EAC_PRISON_OPENACCESS,
                (MyTextsWrapperEnum.EAC_PRISON_OPENACCESS_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.EAC_PRISON_LOCINTEL2 },
                null,
                new List<uint> {(int)EntityID.SecurityHub},
                m_09toEnablePrefabs
            ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudSecurityHub };
            m_objectives.Add(openDoors);

            openDoors.OnMissionLoaded += OnOpenDoorsLoaded;
            
            //10
            var takeOffSecurityCircuit = new MyObjectiveDisablePrefabs(
              (MyTextsWrapperEnum.EAC_PRISON_SECURITYOFF_Name),
              MyMissionID.EAC_PRISON_SECURITYOFF,
              (MyTextsWrapperEnum.EAC_PRISON_SECURITYOFF_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.EAC_PRISON_OPENACCESS },
                new List<uint> { (uint)EntityID.HubHack },
                new List<uint> { (uint)EntityID.HubHackGenerator },
                false,
                false
            ) { SaveOnSuccess = true, StartDialogId = MyDialogueEnum.EAC_PRISON_1000, HudName = MyTextsWrapperEnum.HudHub };

            takeOffSecurityCircuit.OnMissionLoaded += OntakeOffSecuritypartLoaded;//zapne svetlo
            m_objectives.Add(takeOffSecurityCircuit);
            
            //11
            var approachMarcusCell = new MyUseObjective(
                (MyTextsWrapperEnum.EAC_PRISON_MARCUSCELL_Name),
               MyMissionID.EAC_PRISON_MARCUSCELL,
               (MyTextsWrapperEnum.EAC_PRISON_MARCUSCELL_Description),
               null,
               this,
               new MyMissionID[] { MyMissionID.EAC_PRISON_SECURITYOFF },
               new MyMissionLocation(baseSector, (uint)EntityID.MarcusCellLocation),
               MyTextsWrapperEnum.HoldToMoveMarcus,
               MyTextsWrapperEnum.Actor_Marcus,
               MyTextsWrapperEnum.Moving,
               4000,
               MyUseObjectiveType.Taking
            ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudMarcus };
            approachMarcusCell.OnMissionLoaded += OnapproachMarcusLoaded;
            m_objectives.Add(approachMarcusCell);

            var marcusLoaded = new MyObjectiveDialog(
                MyMissionID.EAC_PRISON_MARCUSDIALOG,
                null,
                this,
                new MyMissionID[] { MyMissionID.EAC_PRISON_MARCUSCELL },
                MyDialogueEnum.EAC_PRISON_1200
            ) { SaveOnSuccess = true };
            marcusLoaded.OnMissionLoaded += OnMarcusLoadedLoaded;
            m_objectives.Add(marcusLoaded);

            var weHaveCompany = new MyObjectiveDialog(
                MyMissionID.EAC_PRISON_WE_HAVE_COMPANY,
                null,
                this,
                new MyMissionID[] { MyMissionID.EAC_PRISON_MARCUSDIALOG },
                MyDialogueEnum.EAC_PRISON_1250
            ) { SaveOnSuccess = false };
            weHaveCompany.OnMissionLoaded += OnWeHaveCompanyLoaded;
            m_objectives.Add(weHaveCompany);

            //12
            var findMarcusSmallShip = new MyUseObjective(
             (MyTextsWrapperEnum.EAC_PRISON_COVERMARCUS_Name),
             MyMissionID.EAC_PRISON_COVERMARCUS,
             (MyTextsWrapperEnum.EAC_PRISON_COVERMARCUS_Description),
               null,
               this,
               new MyMissionID[] { MyMissionID.EAC_PRISON_WE_HAVE_COMPANY },
               new MyMissionLocation(baseSector, (uint)EntityID.MarcusShipDetector),
               MyTextsWrapperEnum.HoldToMoveMarcus,
               MyTextsWrapperEnum.Actor_Marcus,
               MyTextsWrapperEnum.Moving,
               4000,
               MyUseObjectiveType.Putting
            ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudShip };

            // destroySolarDefence.OnMissionSuccess += ToHangarSubmissionSuccess;
            m_objectives.Add(findMarcusSmallShip);
            findMarcusSmallShip.OnMissionSuccess += OnSuccesfindMarcusSmallShip;

            //13
            var equipMarcus = new MyUseObjective(
             (MyTextsWrapperEnum.EAC_PRISON_GETARMS_Name),
             MyMissionID.EAC_PRISON_GETARMS,
             (MyTextsWrapperEnum.EAC_PRISON_GETARMS_Description),
                   null,
                   this,
                   new MyMissionID[] { MyMissionID.EAC_PRISON_COVERMARCUS },
                   new MyMissionLocation(baseSector, (uint)EntityID.CargoForMarcus),
                   MyTextsWrapperEnum.HoldToMoveWeapons,
                   MyTextsWrapperEnum.Actor_Marcus,
                   MyTextsWrapperEnum.Moving,
                   4000
             ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudEquipment };

            // destroySolarDefence.OnMissionSuccess += ToHangarSubmissionSuccess;
            m_objectives.Add(equipMarcus);
            equipMarcus.OnMissionSuccess += OnEquipMarcussSucces;
            equipMarcus.OnMissionLoaded += EquipMarcusOnOnMissionLoaded;

            //14
            var fightOutStation = new MyObjective(
                    (MyTextsWrapperEnum.EAC_PRISON_FIGHTOUT_Name),
                MyMissionID.EAC_PRISON_FIGHTOUT,
                (MyTextsWrapperEnum.EAC_PRISON_FIGHTOUT_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.EAC_PRISON_GETARMS },
                new MyMissionLocation(baseSector, (uint)EntityID.StationDummy)
            ) { SaveOnSuccess = true, StartDialogId = MyDialogueEnum.EAC_PRISON_1300, SuccessDialogId = MyDialogueEnum.EAC_PRISON_1400, HudName = MyTextsWrapperEnum.Nothing };
            fightOutStation.OnMissionLoaded += fightOutStation_OnMissionLoaded;
            fightOutStation.OnMissionSuccess += fightOutStation_OnMissionSuccess;
            m_objectives.Add(fightOutStation);

            //15
            var CrushRemainingShips = new MyObjectiveDestroy(
                (MyTextsWrapperEnum.EAC_PRISON_CRUSHREINFORCEMENTS_Name),
                MyMissionID.EAC_PRISON_CRUSHREINFORCEMENTS,
                (MyTextsWrapperEnum.EAC_PRISON_CRUSHREINFORCEMENTS_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.EAC_PRISON_FIGHTOUT },
                new List<uint> { },         // entities needed to kill
                m_15toKillSpawnpoints,  // spawnpoint from which bots must be killed
                false                       // don't show marks on entities (not from spawnpoint)
            ) { SaveOnSuccess = true, };
            m_objectives.Add(CrushRemainingShips);
            
            //16
            var GetToMeetingPoint = new MyObjective(
                (MyTextsWrapperEnum.EAC_PRISON_MEETINGPOINT_Name),
                MyMissionID.EAC_PRISON_MEETINGPOINT,
                (MyTextsWrapperEnum.EAC_PRISON_MEETINGPOINT_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.EAC_PRISON_CRUSHREINFORCEMENTS },
                new MyMissionLocation(baseSector, MyMissionLocation.MADELYN_HANGAR),
                radiusOverride: MyMissionLocation.MADELYN_HANGAR_RADIUS
              ) { SaveOnSuccess = true, StartDialogId = MyDialogueEnum.EAC_PRISON_1500, SuccessDialogId = MyDialogueEnum.EAC_PRISON_1600, HudName = MyTextsWrapperEnum.HudMeetingPoint };
            m_objectives.Add(GetToMeetingPoint);
            
        }
        public MyLastHopeMission()
        {
            ID = MyMissionID.LAST_HOPE;
            Name = MyTextsWrapperEnum.LAST_HOPE;
            Description = MyTextsWrapperEnum.LAST_HOPE_Description;
            DebugName = new StringBuilder("07-Last Hope");
            Flags = MyMissionFlags.Story;

            MyMwcVector3Int baseSector = new MyMwcVector3Int(-190694, 0, -18204363);
            Location = new MyMissionLocation(baseSector, (uint)EntityId.ReachColonyDummy);

            RequiredMissions = new MyMissionID[] { MyMissionID.BARTHS_MOON_TRANSMITTER };
            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.LAST_HOPE_LEAVE_UNDERGROUND };
            RequiredActors = new MyActorEnum[] { MyActorEnum.MARCUS, MyActorEnum.MADELYN };

            #region Objectives

            m_objectives = new List<MyObjective>();

            var reachColony = new MyObjective(
                MyTextsWrapperEnum.LAST_HOPE_REACH_COLONY,
                MyMissionID.LAST_HOPE_REACH_COLONY,
                MyTextsWrapperEnum.LAST_HOPE_REACH_COLONY_DESCRIPTION,
                null,
                this,
                new MyMissionID[] { },
                new MyMissionLocation(baseSector, (uint)EntityId.ReachColonyDummy),
                startDialogId: MyDialogueEnum.LAST_HOPE_0100
                ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudLastHope };
            reachColony.Components.Add(new MySpawnpointWaves((uint)EntityId.ReachColonyDialogDetector, 1, new List<uint[]>()
                                                                                                         {
                                                                                                             new uint[]{(uint)EntityId.ReachColonySpawn1}
                                                                                                        }));
            var dialogComponent = new MyDetectorDialogue((uint)EntityId.ReachColonyDialogDetector, MyDialogueEnum.LAST_HOPE_0200);
            dialogComponent.OnDialogStarted += ReachColonyDialogComonentOnOnDialogStarted;
            dialogComponent.OnDialogFinished += ReachColonyDialogComonentOnOnDialogFinished;
            reachColony.Components.Add(dialogComponent);
            m_objectives.Add(reachColony);




            var destroySlaverRiders = new MyObjectiveDestroy(
              MyTextsWrapperEnum.LAST_HOPE_REACH_DESTROY_RIDERS,
              MyMissionID.LAST_HOPE_DESTROY_SLAVER_RIDERS,
              MyTextsWrapperEnum.LAST_HOPE_REACH_DESTROY_RIDERS_DESC,
              null,
              this,
              new MyMissionID[] { MyMissionID.LAST_HOPE_REACH_COLONY },
              new List<uint> { (uint)EntityId.DestroySlaverRidersGenerator1, (uint)EntityId.DestroySlaverRidersGenerator2 }
            ) { SaveOnSuccess = true, StartDialogId = MyDialogueEnum.LAST_HOPE_0300, HudName = MyTextsWrapperEnum.Nothing };
            destroySlaverRiders.Components.Add(new MySpawnpointWaves((uint)EntityId.DestroySlaverRidersDetector1, 1, new List<uint[]>()
                                                                                                         {
                                                                                                             new uint[]{(uint)EntityId.DestroySlaverRidersSpawn11},
                                                                                                             new uint[]{(uint)EntityId.DestroySlaverRidersSpawn12}
                                                                                                        }));
            destroySlaverRiders.Components.Add(new MySpawnpointWaves((uint)EntityId.DestroySlaverRidersDetector1, 1, new List<uint[]>()
                                                                                                         {
                                                                                                             new uint[]{(uint)EntityId.DestroySlaverRidersSpawn21},
                                                                                                             new uint[]{(uint)EntityId.DestroySlaverRidersSpawn22}
                                                                                                        }));
            destroySlaverRiders.Components.Add(new MySpawnpointWaves((uint)EntityId.DestroySlaverRidersDetector3, 1, new List<uint[]>()
                                                                                                         {
                                                                                                             new uint[]{(uint)EntityId.DestroySlaverRidersSpawn31},
                                                                                                             new uint[]{(uint)EntityId.DestroySlaverRidersSpawn32}
                                                                                                        }));
            destroySlaverRiders.Components.Add(new MySpawnpointWaves((uint)EntityId.DestroySlaverRidersDetector3, 1, new List<uint[]>()
                                                                                                         {
                                                                                                             new uint[]{(uint)EntityId.DestroySlaverRidersSpawn41},
                                                                                                             new uint[]{(uint)EntityId.DestroySlaverRidersSpawn42}
                                                                                                        }));
            destroySlaverRiders.OnMissionLoaded += DestroySlaverRiders_Loaded;
            m_objectives.Add(destroySlaverRiders);


            m_catchSlaverRiders = new MyObjective(
                MyTextsWrapperEnum.LAST_HOPE_REACH_CATCH_SHIPS,
                MyMissionID.LAST_HOPE_CATCH_SLAVER_RIDERS,
                MyTextsWrapperEnum.LAST_HOPE_REACH_CATCH_SHIPS_DESC,
                null,
                this,
                new MyMissionID[] { MyMissionID.LAST_HOPE_DESTROY_SLAVER_RIDERS, },
                new MyMissionLocation(baseSector, (uint)EntityId.CatchSlaverRidersDummy)
            ) { SaveOnSuccess = true, StartDialogId = MyDialogueEnum.LAST_HOPE_0400 };
            m_catchSlaverRiders.Components.Add(new MySpawnpointWaves((uint)EntityId.CatchSlaverRidersDetector1, 1, new List<uint[]>()
                                                                                                         {
                                                                                                             new uint[]{(uint)EntityId.CatchSlaverRidersSpawn1},
                                                                                                        }));
            m_catchSlaverRiders.Components.Add(new MySpawnpointWaves((uint)EntityId.CatchSlaverRidersDetector2, 1, new List<uint[]>()
                                                                                                         {
                                                                                                             new uint[]{(uint)EntityId.CatchSlaverRidersSpawn21},
                                                                                                             new uint[]{(uint)EntityId.CatchSlaverRidersSpawn22}
                                                                                                        }));
            m_catchSlaverRiders.OnMissionLoaded += CatchSlaverRiders_Loaded;
            m_objectives.Add(m_catchSlaverRiders);



            m_stopSlaverTransport = new MyObjectiveDestroy(
                MyTextsWrapperEnum.LAST_HOPE_REACH_STOP_SHIPS,
                MyMissionID.LAST_HOPE_STOP_SLAVER_RIDERS,
                MyTextsWrapperEnum.LAST_HOPE_REACH_STOP_SHIPS_DESC,
                null,
                this,
                new MyMissionID[] { MyMissionID.LAST_HOPE_CATCH_SLAVER_RIDERS },
                new List<uint>() { (uint)EntityId.StopSlaverTransportGenerator1, (uint)EntityId.StopSlaverTransportGenerator2 }
            ) { SaveOnSuccess = false, StartDialogId = MyDialogueEnum.LAST_HOPE_0500 };
            m_movingShip1 = new MyMovingEntity((uint)EntityId.StopSlaverTransportShip1,
                                   (uint)EntityId.StopSlaverTransportShip1Target, StopSlaversObjectiveTime, false);

            m_movingShip2 = new MyMovingEntity((uint)EntityId.StopSlaverTransportShip2,
                                   (uint)EntityId.StopSlaverTransportShip2Target, StopSlaversObjectiveTime, false);

            m_movingShip1Particle = new MyMovingEntity((uint)EntityId.StopSlaverTransportShip1Particle,
                                   (uint)EntityId.StopSlaverTransportShip1TargetParticle, StopSlaversObjectiveTime, false);

            m_movingShip2Particle = new MyMovingEntity((uint)EntityId.StopSlaverTransportShip2Particle,
                                   (uint)EntityId.StopSlaverTransportShip2TargetParticle, StopSlaversObjectiveTime, false);

            m_stopSlaverTransport.Components.Add(m_movingShip1);
            m_stopSlaverTransport.Components.Add(m_movingShip2);
            m_stopSlaverTransport.Components.Add(m_movingShip1Particle);
            m_stopSlaverTransport.Components.Add(m_movingShip2Particle);
            m_stopSlaverTransport.OnMissionLoaded += StopSlaverTransport_Loaded;

            m_stopSlaverTransport.Components.Add(new MySpawnpointWaves((uint)EntityId.CatchSlaverRidersDummy, 1, new List<uint[]>()
                                                                                                         {
                                                                                                             new uint[]{(uint)EntityId.StopSlaverTransportSpawn11,(uint)EntityId.StopSlaverTransportSpawn21,},
                                                                                                             new uint[]{(uint)EntityId.StopSlaverTransportSpawn12,(uint)EntityId.StopSlaverTransportSpawn22,},
                                                                                                        }));
            m_objectives.Add(m_stopSlaverTransport);


            var speakWithFathetTobias = new MyObjectiveDialog
                (
                MyTextsWrapperEnum.LAST_HOPE_SPEAK_WITH_FATHER,
                MyMissionID.LAST_HOPE_SPEAK_WITH_FATHER,
                MyTextsWrapperEnum.LAST_HOPE_SPEAK_WITH_FATHER_DESC,
                null,
                this,
                new MyMissionID[] { MyMissionID.LAST_HOPE_STOP_SLAVER_RIDERS },
                MyDialogueEnum.LAST_HOPE_0600
                ) { SaveOnSuccess = true };
            m_objectives.Add(speakWithFathetTobias);


            var reachCaves = new MyObjective(
                MyTextsWrapperEnum.LAST_HOPE_REACH_REACH_CAVE,
                MyMissionID.LAST_HOPE_REACH_UNDEGROUND_CAVES,
                MyTextsWrapperEnum.LAST_HOPE_REACH_REACH_CAVE_DESC,
                null,
                this,
                new MyMissionID[] { MyMissionID.LAST_HOPE_SPEAK_WITH_FATHER },
                new MyMissionLocation(baseSector, (uint)EntityId.ReachCavesLocation)

            ) { SaveOnSuccess = true, StartDialogId = MyDialogueEnum.LAST_HOPE_0700, HudName = MyTextsWrapperEnum.HudCave };
            m_objectives.Add(reachCaves);


            m_findTunnel = new MyObjective(
                    MyTextsWrapperEnum.LAST_HOPE_REACH_TUNNEL,
                    MyMissionID.LAST_HOPE_FIND_MAINTANCE_TUNELL,
                    MyTextsWrapperEnum.LAST_HOPE_REACH_TUNNEL_DESC,
                    null,
                    this,
                    new MyMissionID[] { MyMissionID.LAST_HOPE_REACH_UNDEGROUND_CAVES },
                    new MyMissionLocation(baseSector, (uint)EntityId.FindTunnelDummy)
                    ) { SaveOnSuccess = true, StartDialogId = MyDialogueEnum.LAST_HOPE_0800, HudName = MyTextsWrapperEnum.HudTunnel };
            m_findTunnel.Components.Add(new MySpawnpointWaves((uint)EntityId.ReachCavesLocation, 1, new List<uint[]>()
                                                                                                         {
                                                                                                             new uint[]{(uint)EntityId.FindTunnelSpawn1},
                                                                                                             new uint[]{(uint)EntityId.FindTunnelSpawn2},
                                                                                                             new uint[]{(uint)EntityId.FindTunnelSpawn3},
                                                                                                        }));
            m_objectives.Add(m_findTunnel);


            var killSaboteurSquad = new MyDestroyWavesObjective
                (
                MyTextsWrapperEnum.LAST_HOPE_KILL_SABOTERS,
                MyMissionID.LAST_HOPE_KILL_SQUAD,
                MyTextsWrapperEnum.LAST_HOPE_KILL_SABOTERS,
                null,
                this,
                new MyMissionID[] { MyMissionID.LAST_HOPE_FIND_MAINTANCE_TUNELL }
                ) { SaveOnSuccess = true };
            killSaboteurSquad.AddWave(new List<uint>() { (uint)EntityId.KillSaboteursSpawn });
            killSaboteurSquad.Components.Add(new MyDetectorDialogue((uint)EntityId.KillSabotersDetector, MyDialogueEnum.LAST_HOPE_1100));
            m_objectives.Add(killSaboteurSquad);



            var deactivateBombs = new MyMultipleUseObjective
                (MyTextsWrapperEnum.LAST_HOPE_DEACTIVATE_BOMBS,
                 MyMissionID.LAST_HOPE_DEACTIVATE_BOMB,
                 MyTextsWrapperEnum.LAST_HOPE_DEACTIVATE_BOMBS_DESC,
                 null,
                 this,
                 new MyMissionID[] { MyMissionID.LAST_HOPE_KILL_SQUAD },
                 MyTextsWrapperEnum.PressToDeactivateNuclearHead,
                 MyTextsWrapperEnum.NuclearHead,
                 MyTextsWrapperEnum.DeactivatingInProgress,
                 5000,
                 new List<uint>() { (uint)EntityId.DeactivateBombPrefab1, (uint)EntityId.DeactivateBombPrefab2 },
                 MyUseObjectiveType.Taking

                ) { RadiusOverride = 30, SaveOnSuccess = true, StartDialogId = MyDialogueEnum.LAST_HOPE_1200 };
            deactivateBombs.OnMissionLoaded += DeactivateBombs_Loaded;
            deactivateBombs.OnObjectUsedSucces += DeactivateBombs_ObjectUsedSuccess;
            deactivateBombs.Components.Add(new MyDetectorDialogue((uint)EntityId.GasCloudsDetector, MyDialogueEnum.LAST_HOPE_1300));
            m_objectives.Add(deactivateBombs);



            m_repairPipes = new MyMultipleUseObjective
                (MyTextsWrapperEnum.LAST_HOPE_STABILIZE_GAS,
                 MyMissionID.LAST_HOPE_REPAIR_PIPES,
                  MyTextsWrapperEnum.LAST_HOPE_STABILIZE_GAS_DESC,
                 null,
                 this,
                 new MyMissionID[] { MyMissionID.LAST_HOPE_DEACTIVATE_BOMB },
                 MyTextsWrapperEnum.PressToRepairGasPipe,
                 MyTextsWrapperEnum.GasPipe,
                 MyTextsWrapperEnum.ProgressRepairing,
                 5000,
                 new List<uint>() { },
                 MyUseObjectiveType.Repairing
                ) { SaveOnSuccess = true, RadiusOverride = 30, StartDialogId = MyDialogueEnum.LAST_HOPE_1400, SuccessDialogId = MyDialogueEnum.LAST_HOPE_1600 };
            foreach (var gasPipe in m_gasPipes)
            {
                m_repairPipes.MissionEntityIDs.Add(gasPipe.Key);
            }
            m_repairPipes.OnObjectUsedSucces += RepairPipes_ObjectUsedSuccess;
            m_objectives.Add(m_repairPipes);



            var stabilizeNuclearCore = new MyMultipleUseObjective
                (
                MyTextsWrapperEnum.LAST_HOPE_STABILIZE_NUCLEAR_CORE,
                MyMissionID.LAST_HOPE_STABILIZE_NUCLEAR_CORE,
                MyTextsWrapperEnum.LAST_HOPE_STABILIZE_GAS_DESC,
                null,
                this,
                new MyMissionID[] { MyMissionID.LAST_HOPE_REPAIR_PIPES },
                MyTextsWrapperEnum.PressToRepairRadiation,
                MyTextsWrapperEnum.RadiationLeak,
                MyTextsWrapperEnum.Fixing,
                5000,
                new List<uint>() { },
                MyUseObjectiveType.Repairing
                ) { RadiusOverride = 40, SaveOnSuccess = true };
            stabilizeNuclearCore.Components.Add(new MyDetectorDialogue((uint)EntityId.StabilizeCoreDialog1Dummy, MyDialogueEnum.LAST_HOPE_1700));
            stabilizeNuclearCore.Components.Add(new MyDetectorDialogue((uint)EntityId.StabilizeCoreDialog2Dummy, MyDialogueEnum.LAST_HOPE_1800));
            foreach (var core in m_nuclearCores)
            {
                stabilizeNuclearCore.MissionEntityIDs.Add(core.Key);
            }
            stabilizeNuclearCore.OnObjectUsedSucces += StabilizeNuclearCore_ObjectUsedSuccess;
            m_objectives.Add(stabilizeNuclearCore);


            var leaveUnderground = new MyObjective
                (
                MyTextsWrapperEnum.LAST_HOPE_LEAVE_SHAFTS,
                MyMissionID.LAST_HOPE_LEAVE_UNDERGROUND,
                MyTextsWrapperEnum.LAST_HOPE_LEAVE_SHAFTS_DESC,
                null,
                this,
                new MyMissionID[] { MyMissionID.LAST_HOPE_STABILIZE_NUCLEAR_CORE },
                new MyMissionLocation(baseSector, (uint)EntityId.LaveUndergroundDummy)) { StartDialogId = MyDialogueEnum.LAST_HOPE_1900, HudName = MyTextsWrapperEnum.Nothing };
            leaveUnderground.OnMissionSuccess += LeaveUnderground_Success;
            m_objectives.Add(leaveUnderground);

            #endregion
        }
        public MyRimeBlueprintsMission()
        {
            ID = MyMissionID.RIME_BLUEPRINTS; /* ID must be added to MyMissions.cs */
            Name = new StringBuilder("11-Rime:Blueprints"); // Name of mission
            Description = new StringBuilder("Choose one of the entrances and sneak through the laboratory to steal the blueprints\n"); // Description of mission - do not forget to \n at the end of each line
            Flags = MyMissionFlags.Story;

            MyMwcVector3Int baseSector = new MyMwcVector3Int(-1922856, 0, -2867519); // Story sector of the script - i.e. (-2465,0,6541)

            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation); // Starting dummy point - must by typecasted to uint and referenced from EntityID enum

            RequiredMissions = new MyMissionID[] { MyMissionID.RIME_CONVINCE }; // IDs of missions required to make this mission available
            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.RIME_BLUEPRINTS_RETURN_TO_MOTHERSHIP };

            m_objectives = new List<MyObjective>(); // Creating of list of submissions

            // START OF REACH OBJECTIVE SUBMISSION DEFINITION
          m_entranceL = new MyObjective( // One member of that list - its type defines the type of submission - MySubmission means fly to the dummypoint to success. Here it is var so you cannot call methods on it
                new StringBuilder("Enter the quarter"), // Name of the submission
                MyMissionID.RIME_BLUEPRINTS_ENTRANCE1, // ID of the submission - must be added to MyMissions.cs
                new StringBuilder(""), // Description of the submission
                null,
                this,
                new MyMissionID[] { }, // ID of submissions required to make this submission available - it is clear so this submission is the starting submission
                new MyMissionLocation(baseSector, (uint)EntityID.EntranceL) // ID of dummy point of checkpoint
            ) { SaveOnSuccess = false }; // False means do not save game in that checkpoint
            m_objectives.Add(m_entranceL); // Adding this submission to the list of submissions of current mission
            // END OF REACH OBJECTIVE SUBMISSION DEFINITION

            // START OF REACH OBJECTIVE SUBMISSION DEFINITION
            m_entranceR = new MyObjective( // One member of that list - its type defines the type of submission - MySubmission means fly to the dummypoint to success. Here it is var so you cannot call methods on it
                new StringBuilder("Entry the quarter with the drone"), // Name of the submission
                MyMissionID.RIME_BLUEPRINTS_ENTRANCE2, // ID of the submission - must be added to MyMissions.cs
                new StringBuilder(""), // Description of the submission
                null,
                this,
                new MyMissionID[] { }, // ID of submissions required to make this submission available - it is clear so this submission is the starting submission
                new MyMissionLocation(baseSector, (uint)EntityID.EntranceR) // ID of dummy point of checkpoint
            ) { SaveOnSuccess = false }; // False means do not save game in that checkpoint
            m_objectives.Add(m_entranceR); // Adding this submission to the list of submissions of current mission
            // END OF REACH OBJECTIVE SUBMISSION DEFINITION

            // START OF REACH OBJECTIVE SUBMISSION DEFINITION
            m_target =  new MyObjectiveOptionalRequirements( 
                new StringBuilder("Get the blueprints"),
                MyMissionID.RIME_BLUEPRINTS_TARGET,
                new StringBuilder("Sneak through the base and get the blueprints!\n"),
                null,
                this,
                new MyMissionID[] { },
                null,
                new MyMissionID[] { MyMissionID.RIME_BLUEPRINTS_ENTRANCE1, MyMissionID.RIME_BLUEPRINTS_ENTRANCE2 },
                1,
                new List<uint>() {(uint)EntityID.HUB }
                ) { SaveOnSuccess = false }; // False means do not save game in that checkpoint
            m_objectives.Add(m_target);
            // END OF REACH OBJECTIVE SUBMISSION DEFINITION

            m_flyExit = new MyObjective( // One member of that list - its type defines the type of submission - MySubmission means fly to the dummypoint to success. Here it is var so you cannot call methods on it
                new StringBuilder("Leave the laboratory"), // Name of the submission
                MyMissionID.RIME_BLUEPRINTS_EXIT, // ID of the submission - must be added to MyMissions.cs
                new StringBuilder("Use the emergency exit.\n"), // Description of the submission
                null,
                this,
                new MyMissionID[] { MyMissionID.RIME_BLUEPRINTS_TARGET }, // ID of submissions required to make this submission available - it is clear so this submission is the starting submission
                new MyMissionLocation(baseSector, (uint)EntityID.Exit) // ID of dummy point of checkpoint
                ) { SaveOnSuccess = false }; // False means do not save game in that checkpoint
            m_objectives.Add(m_flyExit);

           var returnToFrancis = new MyObjective( // One member of that list - its type defines the type of submission - MySubmission means fly to the dummypoint to success. Here it is var so you cannot call methods on it
                new StringBuilder("Get back to Francis"), // Name of the submission
                MyMissionID.RIME_BLUEPRINTS_RETURN_TO_FRANCIS, // ID of the submission - must be added to MyMissions.cs
                new StringBuilder("Bring the blueprints back to Francis Reef\n"), // Description of the submission
                null,
                this,
                new MyMissionID[] { MyMissionID.RIME_BLUEPRINTS_EXIT }, // ID of submissions required to make this submission available - it is clear so this submission is the starting submission
                new MyMissionLocation(baseSector, (uint)EntityID.Return) // ID of dummy point of checkpoint
                ) { SaveOnSuccess = false }; // False means do not save game in that checkpoint
            m_objectives.Add(returnToFrancis);

            var returnToMothership = new MyObjective( // One member of that list - its type defines the type of submission - MySubmission means fly to the dummypoint to success. Here it is var so you cannot call methods on it
               new StringBuilder("Return to your mothership"), // Name of the submission
               MyMissionID.RIME_BLUEPRINTS_RETURN_TO_MOTHERSHIP, // ID of the submission - must be added to MyMissions.cs
               new StringBuilder(""), // Description of the submission
               null,
               this,
               new MyMissionID[] { MyMissionID.RIME_BLUEPRINTS_RETURN_TO_FRANCIS }, // ID of submissions required to make this submission available - it is clear so this submission is the starting submission
               new MyMissionLocation(baseSector, (uint)EntityID.ReturnToMothership) // ID of dummy point of checkpoint
               ) { SaveOnSuccess = false }; // False means do not save game in that checkpoint
            m_objectives.Add(returnToMothership);
        }
Example #19
0
        public MyChineseTransmitterMission()
        {
            ID          = MyMissionID.CHINESE_TRANSMITTER; /* ID must be added to MyMissions.cs */
            Name        = MyTextsWrapperEnum.CHINESE_TRANSMITTER;
            Description = MyTextsWrapperEnum.CHINESE_TRANSMITTER_Description;
            DebugName   = new StringBuilder("16-PRC transmitter"); // Nazev mise
            Flags       = MyMissionFlags.Story;

            MyMwcVector3Int baseSector = new MyMwcVector3Int(2329559, 0, 4612446);            // Story sector of the script

            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation);       // Starting dummy point

            RequiredMissions           = new MyMissionID[] { MyMissionID.BARTHS_MOON_PLANT }; // mise ktere musi byt splneny pred prijetim teto mise
            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.CHINESE_TRANSMITTER_ESCAPE3 };
            RequiredActors             = new MyActorEnum[] { MyActorEnum.MADELYN, MyActorEnum.TARJA, MyActorEnum.VALENTIN };

            m_objectives = new List <MyObjective>(); // Creating of list of submissions
            // START DEFINICE SUBMISE

            var lootCargo = new MyObjective(                                     // One member of that list - je to MySubmission takze cilem je doletet do checkpointu
                (MyTextsWrapperEnum.CHINESE_TRANSMITTER_LOOT_CARGO_Name),        // nazev submise
                MyMissionID.CHINESE_TRANSMITTER_LOOT_CARGO,                      // id submise
                (MyTextsWrapperEnum.CHINESE_TRANSMITTER_LOOT_CARGO_Description), // popis submise
                null,
                this,
                new MyMissionID[] { }, // ID submisi ktere musi byt splneny - je to prazdne takze je to prvni submise
                new MyMissionLocation(baseSector, (uint)EntityID.CargoDummy),
                startDialogId: MyDialogueEnum.CHINESE_TRANSMITTER_0100_INTRODUCE
                )
            {
                SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudCargo
            };                                                                // nastaveni save na checkpointu nebo ne

            m_objectives.Add(lootCargo);
            lootCargo.OnMissionSuccess += LootSucces;


            //var spawnPointSmartWaves =
            //    new MySpawnpointSmartWaves(
            //        new[] { (uint) EntityID.Security_Spawn1, (uint) EntityID.Loot_Spawn }, null, 2);

            //Components.Add(spawnPointSmartWaves);

            var talkWith = new MyObjectiveDialog(
                MyTextsWrapperEnum.CHINESE_TRANSMITTER_DIALOGUE_1_Name,
                MyMissionID.CHINESE_TRANSMITTER_DIALOGUE_1,
                MyTextsWrapperEnum.CHINESE_TRANSMITTER_DIALOGUE_1_Description,
                null,
                this,
                new MyMissionID[] { MyMissionID.CHINESE_TRANSMITTER_LOOT_CARGO },
                dialogId: MyDialogueEnum.CHINESE_TRANSMITTER_0200_CARGO_BAY
                )
            {
                SaveOnSuccess = false
            };

            m_objectives.Add(talkWith);

            var checkpoint = new MyObjective(                                    // One member of that list - je to MySubmission takze cilem je doletet do checkpointu
                (MyTextsWrapperEnum.CHINESE_TRANSMITTER_CHECKPOINT_Name),        // nazev submise
                MyMissionID.CHINESE_TRANSMITTER_CHECKPOINT,                      // id submise
                (MyTextsWrapperEnum.CHINESE_TRANSMITTER_CHECKPOINT_Description), // popis submise
                null,
                this,
                new MyMissionID[] { MyMissionID.CHINESE_TRANSMITTER_DIALOGUE_1 }, // ID submisi ktere musi byt splneny - je to prazdne takze je to prvni submise
                new MyMissionLocation(baseSector, (uint)EntityID.checkpoint)
                //successDialogId: MyDialogueEnum.CHINESE_TRANSMITTER_0300_CARGO_BAY_2// ID of dummy point of checkpoint
                )
            {
                SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudStation
            };                            // nastaveni save na checkpointu nebo ne

            m_objectives.Add(checkpoint); // pridani do seznamu submisi



            var findSecurityControl = new MyObjective(                                      // One member of that list - je to MySubmission takze cilem je doletet do checkpointu
                (MyTextsWrapperEnum.CHINESE_TRANSMITTER_FIND_SECURITY_CONTROL_Name),        // nazev submise
                MyMissionID.CHINESE_TRANSMITTER_FIND_SECURITY_CONTROL,                      // id submise
                (MyTextsWrapperEnum.CHINESE_TRANSMITTER_FIND_SECURITY_CONTROL_Description), // popis submise
                null,
                this,
                new MyMissionID[] { MyMissionID.CHINESE_TRANSMITTER_CHECKPOINT, }, // ID submisi ktere musi byt splneny - je to prazdne takze je to prvni submise
                new MyMissionLocation(baseSector, (uint)EntityID.SecurityDummy),   // ID of dummy point of checkpoint
                startDialogId: MyDialogueEnum.CHINESE_TRANSMITTER_0300_CARGO_BAY_2
                )
            {
                SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudControlCenter
            };                                                                          // nastaveni save na checkpointu nebo ne

            m_objectives.Add(findSecurityControl);
            findSecurityControl.OnMissionSuccess += FindSecurityControl_OnMissionSuccess;

            var talkWith3 = new MyObjectiveDialog(
                MyTextsWrapperEnum.CHINESE_TRANSMITTER_DIALOGUE_3_Name,
                MyMissionID.CHINESE_TRANSMITTER_DIALOGUE_3,
                MyTextsWrapperEnum.CHINESE_TRANSMITTER_DIALOGUE_3_Description,
                null,
                this,
                new MyMissionID[] { MyMissionID.CHINESE_TRANSMITTER_FIND_SECURITY_CONTROL },
                dialogId: MyDialogueEnum.CHINESE_TRANSMITTER_0400_SECURITY_ROOM
                )
            {
                SaveOnSuccess = false
            };

            m_objectives.Add(talkWith3);

            var destroyGenerator = new MyObjectiveDestroy( // Var is used to call functions on that member
                (MyTextsWrapperEnum.CHINESE_TRANSMITTER_DESTROY_SECURITY_CONTROL_Name),
                MyMissionID.CHINESE_TRANSMITTER_DESTROY_SECURITY_CONTROL,
                (MyTextsWrapperEnum.CHINESE_TRANSMITTER_DESTROY_SECURITY_CONTROL_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.CHINESE_TRANSMITTER_DIALOGUE_3, },
                new List <uint> {
                (uint)EntityID.Generator
            },
                new List <uint>(),
                true
                )
            {
                SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudGenerator
            };

            destroyGenerator.MissionEntityIDs.Add((uint)EntityID.Generator);
            m_objectives.Add(destroyGenerator); // pridani do seznamu submisi
            destroyGenerator.OnMissionSuccess += DestroyMSSucces;

            /*  var talkWith4 = new MyObjectiveDialog(
             * new StringBuilder("Find the comand center"),
             * MyMissionID.CHINESE_TRANSMITTER_DIALOGUE_4,
             * new StringBuilder(""),
             * null,
             * this,
             * new MyMissionID[] { MyMissionID.CHINESE_TRANSMITTER_DESTROY_SECURITY_CONTROL, },
             * dialogId: MyDialogueEnum.CHINESE_TRANSMITTER_0500_GENERATOR_DESTROYED
             * ) { SaveOnSuccess = false };
             * m_objectives.Add(talkWith4);*/


            var findCIC = new MyObjective(                                     // One member of that list - je to MySubmission takze cilem je doletet do checkpointu
                (MyTextsWrapperEnum.CHINESE_TRANSMITTER_FIND_CIC_Name),        // nazev submise
                MyMissionID.CHINESE_TRANSMITTER_FIND_CIC,                      // id submise
                (MyTextsWrapperEnum.CHINESE_TRANSMITTER_FIND_CIC_Description), // popis submise
                null,
                this,
                new MyMissionID[] { MyMissionID.CHINESE_TRANSMITTER_DESTROY_SECURITY_CONTROL, }, // ID submisi ktere musi byt splneny - je to prazdne takze je to prvni submise
                new MyMissionLocation(baseSector, (uint)EntityID.FindCICDummy),                  // ID of dummy point of checkpoint
                startDialogId: MyDialogueEnum.CHINESE_TRANSMITTER_0500_GENERATOR_DESTROYED
                )
            {
                SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudCommandCenter
            };                         // nastaveni save na checkpointu nebo ne

            m_objectives.Add(findCIC); // pridani do seznamu submisi
            findCIC.OnMissionSuccess += findCICSucces;

            m_talkWith5 = new MyObjectiveDialog(
                (MyTextsWrapperEnum.CHINESE_TRANSMITTER_DIALOGUE_5_Name),
                MyMissionID.CHINESE_TRANSMITTER_DIALOGUE_5,
                (MyTextsWrapperEnum.CHINESE_TRANSMITTER_DIALOGUE_5_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.CHINESE_TRANSMITTER_FIND_CIC, },
                dialogId: MyDialogueEnum.CHINESE_TRANSMITTER_0600_CIC_FOUND
                )
            {
                SaveOnSuccess = false
            };
            m_objectives.Add(m_talkWith5);

            m_hackCIC = new MyObjectiveEnablePrefabs(
                (MyTextsWrapperEnum.CHINESE_TRANSMITTER_OPEN_CIC_Name),
                MyMissionID.CHINESE_TRANSMITTER_OPEN_CIC,
                (MyTextsWrapperEnum.CHINESE_TRANSMITTER_OPEN_CIC_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.CHINESE_TRANSMITTER_DIALOGUE_5 },
                null,
                new List <uint> {
                (uint)EntityID.HUB
            },
                new List <uint> {
                (uint)EntityID.CICDoors_1, (uint)EntityID.CICDoors_2
            }
                )
            {
                HudName = MyTextsWrapperEnum.HudSecurityHub
            };
            m_objectives.Add(m_hackCIC);


            var talkWith6 = new MyObjectiveDialog(
                (MyTextsWrapperEnum.CHINESE_TRANSMITTER_DIALOGUE_6_Name),
                MyMissionID.CHINESE_TRANSMITTER_DIALOGUE_6,
                (MyTextsWrapperEnum.CHINESE_TRANSMITTER_DIALOGUE_6_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.CHINESE_TRANSMITTER_OPEN_CIC },
                dialogId: MyDialogueEnum.CHINESE_TRANSMITTER_0700_HUB_HACKED
                )
            {
                SaveOnSuccess = false
            };

            talkWith6.MissionEntityIDs.Add((uint)EntityID.InsideCICDummy);
            m_objectives.Add(talkWith6);

            m_placeRadarMission = new MyUseObjective(
                (MyTextsWrapperEnum.CHINESE_TRANSMITTER_PLACE_DEVICE_Name),
                MyMissionID.CHINESE_TRANSMITTER_PLACE_DEVICE,
                (MyTextsWrapperEnum.CHINESE_TRANSMITTER_PLACE_DEVICE_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.CHINESE_TRANSMITTER_DIALOGUE_6, },
                new MyMissionLocation(baseSector, (uint)EntityID.InsideCICDummy),
                MyTextsWrapperEnum.PressToPlaceDetector,
                MyTextsWrapperEnum.DetectorPlacement,
                MyTextsWrapperEnum.DeployingInProgress,
                5000
                //StartDialogId: MyDialogueEnum.CHINESETRANSMITTER_0700_HUB_HACKED
                )
            {
                SaveOnSuccess = true, HudName = MyTextsWrapperEnum.Nothing
            };
            m_placeRadarMission.OnMissionSuccess += PlaceRadarSucces;
            m_objectives.Add(m_placeRadarMission);

            /*   talkWith7 = new MyObjectiveDialog(
             * new StringBuilder("Help Tarja and Valentin"),
             * MyMissionID.CHINESE_TRANSMITTER_DIALOGUE_7,
             * new StringBuilder(""),
             * null,
             * this,
             * new MyMissionID[] { MyMissionID.CHINESE_TRANSMITTER_PLACE_DEVICE},
             * dialogId: MyDialogueEnum.CHINESE_TRANSMITTER_1000_DETECTOR_PLACED
             * ) { SaveOnSuccess = false };
             * m_objectives.Add(talkWith7);*/

            m_escape = new MyObjective(                                      // One member of that list - je to MySubmission takze cilem je doletet do checkpointu
                (MyTextsWrapperEnum.CHINESE_TRANSMITTER_ESCAPE_Name),        // nazev submise
                MyMissionID.CHINESE_TRANSMITTER_ESCAPE,                      // id submise
                (MyTextsWrapperEnum.CHINESE_TRANSMITTER_ESCAPE_Description), // popis submise
                null,
                this,
                new MyMissionID[] { MyMissionID.CHINESE_TRANSMITTER_PLACE_DEVICE },       // ID submisi ktere musi byt splneny - je to prazdne takze je to prvni submise
                new MyMissionLocation(baseSector, (uint)EntityID.EscapeDummy),
                startDialogId: MyDialogueEnum.CHINESE_TRANSMITTER_0800_TRANSMITTER_PLACED // ID of dummy point of checkpoint
                )
            {
                SaveOnSuccess = false, HudName = MyTextsWrapperEnum.Nothing
            };                          // nastaveni save na checkpointu nebo ne
            m_objectives.Add(m_escape); // pridani do seznamu submisi
            m_escape.OnMissionSuccess += Escape2MSSuccess;

            /*var talkWith8 = new MyObjectiveDialog(
             * new StringBuilder("Help Tarja and Valentin"),
             * MyMissionID.CHINESE_TRANSMITTER_DIALOGUE_8,
             * new StringBuilder("Help Tarja and Valentin"),
             * null,
             * this,
             * new MyMissionID[] {MyMissionID.CHINESE_TRANSMITTER_ESCAPE},
             * dialogId: MyDialogueEnum.CHINESE_TRANSMITTER_0800_ESCAPE_1
             * ) { SaveOnSuccess = false };
             * m_objectives.Add(talkWith8);
             *
             */

            var escape3 = new MyObjective(                                    // One member of that list - je to MySubmission takze cilem je doletet do checkpointu
                (MyTextsWrapperEnum.CHINESE_TRANSMITTER_ESCAPE3_Name),        // nazev submise
                MyMissionID.CHINESE_TRANSMITTER_ESCAPE3,                      // id submise
                (MyTextsWrapperEnum.CHINESE_TRANSMITTER_ESCAPE3_Description), // popis submise
                null,
                this,
                new MyMissionID[] { MyMissionID.CHINESE_TRANSMITTER_ESCAPE },        // ID submisi ktere musi byt splneny - je to prazdne takze je to prvni submise
                new MyMissionLocation(baseSector, MyMissionLocation.MADELYN_HANGAR), // ID of dummy point of checkpoint
                startDialogId: MyDialogueEnum.CHINESE_TRANSMITTER_0900_ESCAPE_2,
                successDialogId: MyDialogueEnum.CHINESE_TRANSMITTER_1000_MISSION_COMPLETE,
                radiusOverride: MyMissionLocation.MADELYN_HANGAR_RADIUS
                )
            {
                SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudMadelynsSapho
            };                         // nastaveni save na checkpointu nebo ne

            m_objectives.Add(escape3); // pridani do seznamu submisi

            m_talkWith5.OnMissionSuccess += TimeRush;
        }
        public MyRussianWarehouseMission()
        {
            MyMwcVector3Int baseSector = new MyMwcVector3Int(-7420630, 0, 388170);

            ID = MyMissionID.RUSSIAN_WAREHOUSE;
            DebugName = new StringBuilder("05-Russian warehouse");
            Name = MyTextsWrapperEnum.RUSSIAN_WAREHOUSE;
            Description = MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_Description;
            Flags = MyMissionFlags.Story;
            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation);

            RequiredMissions = new MyMissionID[] { MyMissionID.PIRATE_BASE };
            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.RUSSIAN_WAREHOUSE_MEETINGPOINT };
            RequiredActors = new MyActorEnum[] { MyActorEnum.MARCUS, MyActorEnum.MADELYN };

            m_objectives = new List<MyObjective>();
            m_sneakInsideMainBaseSubmission = new MyObjective(
                (MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_SNEAKINMAINBASE_Name),
                MyMissionID.RUSSIAN_WAREHOUSE_SNEAKINMAINBASE,
                (MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_SNEAKINMAINBASE_Description),
                null,
                this,
                new MyMissionID[] { },
                new MyMissionLocation(baseSector, (uint)EntityID.SneakInsideSubmissionLocation),
                startDialogId: MyDialogueEnum.RUSSIAN_WAREHOUSE_0100
            ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudEntrance };
            m_sneakInsideMainBaseSubmission.OnMissionLoaded += SneakInsideMainBaseSubmission_OnMissionLoaded;
            m_objectives.Add(m_sneakInsideMainBaseSubmission);
            
            var TurnOffSecurityCams = new MyObjectiveDisablePrefabs(
                (MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_TURNOFFCAMS_Name),
                MyMissionID.RUSSIAN_WAREHOUSE_TURNOFFCAMS,
                (MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_TURNOFFCAMS_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.RUSSIAN_WAREHOUSE_SNEAKINMAINBASE },
                new List<uint>() { (uint)EntityID.TurnOffCamera0, (uint)EntityID.TurnOffCamera1, (uint)EntityID.TurnOffCamera2 },
                new List<uint>() { (uint)EntityID.TurnOffHUB },
                markObjectsToDisable: false,
                startDialogId: MyDialogueEnum.RUSSIAN_WAREHOUSE_0200
            ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudSecurityHub };
            m_objectives.Add(TurnOffSecurityCams);
            TurnOffSecurityCams.OnMissionLoaded += TurnOffSecurityCams_OnMissionLoaded;

            var ControlTurret = new MyObjectiveDisablePrefabs(
                (MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_CTRLTURRET_Name),
                MyMissionID.RUSSIAN_WAREHOUSE_CTRLTURRET,
                (MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_CTRLTURRET_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.RUSSIAN_WAREHOUSE_TURNOFFCAMS },
                new List<uint>() { (uint)EntityID.SecurityTower1, (uint)EntityID.SecurityTower2, (uint)EntityID.SecurityTower3, (uint)EntityID.SecurityTower4, (uint)EntityID.SecurityTower5 },
                new List<uint>() { (uint)EntityID.SecurityTowersHUB },
                markObjectsToDisable: false
            ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudSecurityHub };
            ControlTurret.OnMissionLoaded += ControlTurretOnLoaded;
            ControlTurret.OnMissionSuccess += ControlTurretOnSuccess;
            m_objectives.Add(ControlTurret);

            var OpenDoor = new MyObjectiveEnablePrefabs(
                (MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_OPEN_DOORS_Name),
                MyMissionID.RUSSIAN_WAREHOUSE_OPEN_DOORS,
                (MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_OPEN_DOORS_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.RUSSIAN_WAREHOUSE_CTRLTURRET },
                null,
                new List<uint> { (uint)EntityID.OpenDoorHUB},
                new List<uint> { (uint)EntityID.GetOutsideDoors },
                startDialogId: MyDialogueEnum.RUSSIAN_WAREHOUSE_0300
                ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudHub };
            m_objectives.Add(OpenDoor);

            var GetOutsideMainBase = new MyObjective(
                (MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_GETOUTMAINBASE_Name),
                MyMissionID.RUSSIAN_WAREHOUSE_GETOUTMAINBASE,
                (MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_GETOUTMAINBASE_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.RUSSIAN_WAREHOUSE_OPEN_DOORS },
                new MyMissionLocation(baseSector, (uint)EntityID.GetOutsideSubmissionLocation),
                startDialogId: MyDialogueEnum.RUSSIAN_WAREHOUSE_0400
            ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.Nothing };
            GetOutsideMainBase.OnMissionLoaded += new MissionHandler(GetOutsideMainBase_OnMissionLoaded);
            m_objectives.Add(GetOutsideMainBase);

            var BreakThruOldEntrance = new MyObjective(
                (MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_BREAKOLDENTRANCE_Name),
                MyMissionID.RUSSIAN_WAREHOUSE_BREAKOLDENTRANCE,
                (MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_BREAKOLDENTRANCE_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.RUSSIAN_WAREHOUSE_GETOUTMAINBASE },
                new MyMissionLocation(baseSector, (uint)EntityID.BreakThroughSubmissionLocation),
                startDialogId: MyDialogueEnum.RUSSIAN_WAREHOUSE_1100
            ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.Nothing };
            BreakThruOldEntrance.OnMissionLoaded += BreakThruOldEntrance_OnMissionLoaded;
            BreakThruOldEntrance.OnMissionUpdate += UpdateRussianMothershipMovement;
            m_objectives.Add(BreakThruOldEntrance);

            var LocateWarehouse = new MyObjective(
                (MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_LOCATEWAREHOUSE_Name),
                MyMissionID.RUSSIAN_WAREHOUSE_LOCATEWAREHOUSE,
                (MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_LOCATEWAREHOUSE_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.RUSSIAN_WAREHOUSE_BREAKOLDENTRANCE },
                new MyMissionLocation(baseSector, (uint)EntityID.LocateWarehouseSubmissionLocation),
                startDialogId: MyDialogueEnum.RUSSIAN_WAREHOUSE_0500
            ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.Nothing };
            LocateWarehouse.OnMissionUpdate += UpdateRussianMothershipMovement;
            LocateWarehouse.OnMissionLoaded += LocateWarehouse_OnMissionLoaded;
            LocateWarehouse.OnMissionCleanUp += LocateWarehouse_OnMissionUnload;
            m_objectives.Add(LocateWarehouse);

            var FindTransmitter = new MyUseObjective(
                (MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_FINDTRANSMITTER_Name),
                MyMissionID.RUSSIAN_WAREHOUSE_FINDTRANSMITTER,
                (MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_FINDTRANSMITTER_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.RUSSIAN_WAREHOUSE_LOCATEWAREHOUSE },
                new MyMissionLocation(baseSector, (uint)EntityID.TransmitterCargoBox),
                Localization.MyTextsWrapperEnum.PressToTakeCargo,
                Localization.MyTextsWrapperEnum.TakeAll,
                Localization.MyTextsWrapperEnum.TakeAll,
                1000,
                radiusOverride: 50,
                startDialogId: MyDialogueEnum.RUSSIAN_WAREHOUSE_0700
            ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudTransmitter };
            FindTransmitter.OnMissionUpdate += UpdateRussianMothershipMovement;
            FindTransmitter.OnMissionLoaded += new MissionHandler(FindTransmitter_OnMissionLoaded);
            FindTransmitter.OnMissionSuccess += new MissionHandler(FindTransmitter_OnMissionSuccess);
            m_objectives.Add(FindTransmitter);

            var downDataDlgSubmission = new MyObjectiveDialog(
                    MyMissionID.RUSSIAN_WAREHOUSE_DOWNDATADIALOGUE,
                    null,
                    this,
                    new MyMissionID[] { MyMissionID.RUSSIAN_WAREHOUSE_FINDTRANSMITTER },
                    MyDialogueEnum.RUSSIAN_WAREHOUSE_0800
                );
            downDataDlgSubmission.OnMissionUpdate += UpdateRussianMothershipMovement;
            m_objectives.Add(downDataDlgSubmission);

            var DownData = new MyUseObjective(
                (MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_DOWNLOAD_DATA_Name),
                MyMissionID.RUSSIAN_WAREHOUSE_DOWNLOAD_DATA,
                (MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_DOWNLOAD_DATA_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.RUSSIAN_WAREHOUSE_DOWNDATADIALOGUE },
                new MyMissionLocation(baseSector, (uint)EntityID.DownloadDataDummy),
                Localization.MyTextsWrapperEnum.PressToDownloadData,
                Localization.MyTextsWrapperEnum.Console,
                Localization.MyTextsWrapperEnum.DownloadingData,
                3000) { SaveOnSuccess = true };
            DownData.OnMissionUpdate += UpdateRussianMothershipMovement;
            DownData.OnMissionLoaded += DownDataOnLoaded;
            m_objectives.Add(DownData);

            var TurnOffMainDefense1 = new MyObjectiveDisablePrefabs(
                (MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_TURNOFFMAINDEF_PART1_Name),
                MyMissionID.RUSSIAN_WAREHOUSE_TURNOFFMAINDEF_PART1,
                (MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_TURNOFFMAINDEF_PART1_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.RUSSIAN_WAREHOUSE_DOWNLOAD_DATA },
                new List<uint>() { (uint)EntityID.CargoTurret0, (uint)EntityID.CargoTurret1, (uint)EntityID.CargoTurret2, (uint)EntityID.CargoTurret3, (uint)EntityID.CargoTurret4 },
                new List<uint>() { (uint)EntityID.CargoTurretHUB0 },
                markObjectsToDisable: false,
                startDialogId: MyDialogueEnum.RUSSIAN_WAREHOUSE_0900
            ) { HudName = MyTextsWrapperEnum.HudHubA };
            TurnOffMainDefense1.OnMissionUpdate += UpdateRussianMothershipMovement;
            m_objectives.Add(TurnOffMainDefense1);

            var TurnOffMainDefense2 = new MyObjectiveDisablePrefabs(
                (MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_TURNOFFMAINDEF_PART2_Name),
                MyMissionID.RUSSIAN_WAREHOUSE_TURNOFFMAINDEF_PART2,
                (MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_TURNOFFMAINDEF_PART2_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.RUSSIAN_WAREHOUSE_TURNOFFMAINDEF_PART1 },
                new List<uint>() { (uint)EntityID.CargoTurret5, (uint)EntityID.CargoTurret6, (uint)EntityID.CargoTurret7, (uint)EntityID.CargoTurret8, (uint)EntityID.CargoTurret9 },
                new List<uint>() { (uint)EntityID.CargoTurretHUB1 },
                markObjectsToDisable: false
            ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudHubB };
            TurnOffMainDefense2.OnMissionUpdate += UpdateRussianMothershipMovement;
            m_objectives.Add(TurnOffMainDefense2);

            var GetOutsideWarehouse = new MyObjective(
                (MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_GETOUTWAREHOUSE_Name),
                MyMissionID.RUSSIAN_WAREHOUSE_GETOUTWAREHOUSE,
                (MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_GETOUTWAREHOUSE_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.RUSSIAN_WAREHOUSE_TURNOFFMAINDEF_PART1, MyMissionID.RUSSIAN_WAREHOUSE_TURNOFFMAINDEF_PART2 },
                new MyMissionLocation(baseSector, (uint)EntityID.GetOutsideThruCargoSubmissionLocation)
            ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.Nothing };
            GetOutsideWarehouse.OnMissionUpdate += UpdateRussianMothershipMovement;
            GetOutsideWarehouse.OnMissionLoaded += GetOutsideWarehouseOnLoad;
            GetOutsideWarehouse.OnMissionCleanUp += GetOutsideWarehouseOnCleanUp;
            m_objectives.Add(GetOutsideWarehouse);

            var CrushRemainingShips = new MyObjectiveDestroy(
                (MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_CRUSHREMAINGSHIPS_Name),
                MyMissionID.RUSSIAN_WAREHOUSE_CRUSHREMAINGSHIPS,
                (MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_CRUSHREMAINGSHIPS_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.RUSSIAN_WAREHOUSE_GETOUTWAREHOUSE },
                new List<uint> { },
                new List<uint> { (uint)EntityID.CrushRussiansSpawnpoint },
                false
            ) { SaveOnSuccess = true };
            CrushRemainingShips.OnMissionUpdate += UpdateRussianMothershipMovement;
            CrushRemainingShips.OnMissionLoaded += CrushRemainingShipsOnLoad;
            m_objectives.Add(CrushRemainingShips);

            m_returnToMeetingPointSubmission = new MyObjective(
                (MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_MEETINGPOINT_Name),
                MyMissionID.RUSSIAN_WAREHOUSE_MEETINGPOINT,
                (MyTextsWrapperEnum.RUSSIAN_WAREHOUSE_MEETINGPOINT_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.RUSSIAN_WAREHOUSE_CRUSHREMAINGSHIPS },
                new MyMissionLocation(baseSector, MyMissionLocation.MADELYN_HANGAR),
                successDialogId: MyDialogueEnum.RUSSIAN_WAREHOUSE_1000,
                radiusOverride: MyMissionLocation.MADELYN_HANGAR_RADIUS
            ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudMadelynsSapho };
            m_returnToMeetingPointSubmission.OnMissionUpdate += UpdateRussianMothershipMovement;
            m_returnToMeetingPointSubmission.OnMissionUpdate += new MissionHandler(ReturnToMeetingPointSubmissionOnUpdate);
            m_objectives.Add(m_returnToMeetingPointSubmission);

            Components.Add(new MySpawnpointWaves((uint)EntityID.RaidDetector, 0, (uint)EntityID.RaidSpawnpoint));
        }
        public MyBarthsMoonConvinceMission()
            : base(
            MyMissionID.BARTHS_MOON_CONVINCE,
            new StringBuilder("03-Barth's moon convince"), 
            MyTextsWrapperEnum.BARTHS_MOON_CONVINCE,
            MyTextsWrapperEnum.BARTHS_MOON_CONVINCE_Description,
            new MyMissionID[] { MyMissionID.LAIKA }, 
            new EntityID[]{},
            EntityID.PlayerStartLocationConvince
            )
        {
            RequiredMissions = new MyMissionID[] { MyMissionID.LAIKA };
            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.BARTHS_MOON_CONVINCE_RETURN_BACK_TO_MADELYN };
            RequiredActors = new MyActorEnum[] { MyActorEnum.MARCUS, MyActorEnum.MADELYN };
            AchievementName = MySteamAchievementNames.Mission03_Barths;
            
            m_objectives = new List<MyObjective>();

            var meetThomasBarth = new MyObjective(
                (MyTextsWrapperEnum.BARTHS_MOON_CONVINCE_MEET_THOMAS_BART_Name),
                MyMissionID.BARTHS_MOON_CONVINCE_MEET_THOMAS_BART,
                (MyTextsWrapperEnum.BARTHS_MOON_CONVINCE_MEET_THOMAS_BART_Description),
                null,
                this,
                new MyMissionID[] {},
                new MyMissionLocation(baseSector, (uint)EntityID.ThomasBartId),
                startDialogId: MyDialogueEnum.BARTHS_MOON_CONVINCE_0100, 
                radiusOverride: 50
            ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudBarth };
            meetThomasBarth.OnMissionLoaded += MeetThomasBarthOnLoaded;
            meetThomasBarth.OnMissionCleanUp += MeetThomasBarthOnUnload;
            m_objectives.Add(meetThomasBarth);

            var talkWithThomasBarth = new MyBarthsMoonSubmissionTalkWithThomasBarth(
                (MyTextsWrapperEnum.BARTHS_MOON_CONVINCE_TALK_WITH_THOMAS_BART_Name),
                MyMissionID.BARTHS_MOON_CONVINCE_TALK_WITH_THOMAS_BART,
                (MyTextsWrapperEnum.BARTHS_MOON_CONVINCE_TALK_WITH_THOMAS_BART_Description),
                this,
                new MyMissionID[] { MyMissionID.BARTHS_MOON_CONVINCE_MEET_THOMAS_BART },
                MyDialogueEnum.BARTHS_MOON_CONVINCE_0300,
                true
            ) { SaveOnSuccess = false };
            m_objectives.Add(talkWithThomasBarth);

            var flyToEnemyBase = new MyObjective(
                (MyTextsWrapperEnum.BARTHS_MOON_CONVINCE_FLY_TO_ENEMY_BASE_Name),
                MyMissionID.BARTHS_MOON_CONVINCE_FLY_TO_ENEMY_BASE,
                (MyTextsWrapperEnum.BARTHS_MOON_CONVINCE_FLY_TO_ENEMY_BASE_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.BARTHS_MOON_CONVINCE_TALK_WITH_THOMAS_BART },
                new MyMissionLocation(baseSector, (uint)EntityID.FlyToEnemyBaseSubmissionLocation),
                null,
                successDialogId: MyDialogueEnum.BARTHS_MOON_CONVINCE_0500,
                startDialogId: MyDialogueEnum.BARTHS_MOON_CONVINCE_0400
            ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudEnemyBase };
            flyToEnemyBase.OnMissionLoaded += FlyToEnemyBaseOnLoaded;
            flyToEnemyBase.OnMissionCleanUp += FlyToEnemyBaseOnCleanUp;
            m_objectives.Add(flyToEnemyBase);

            var destroyShipSubmission = new MyObjectiveDestroy(
                (MyTextsWrapperEnum.BARTHS_MOON_CONVINCE_DESTROY_SHIP_Name),
                MyMissionID.BARTHS_MOON_CONVINCE_DESTROY_SHIP,
                (MyTextsWrapperEnum.BARTHS_MOON_CONVINCE_DESTROY_SHIP_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.BARTHS_MOON_CONVINCE_FLY_TO_ENEMY_BASE },
                new List<uint>() { (uint)EntityID.ShipGenerator },
                new List<uint>() {},
                startDialogID: MyDialogueEnum.BARTHS_MOON_CONVINCE_0600
            ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudGenerator };
            destroyShipSubmission.OnMissionLoaded += DestroyShipSubmissionOnLoad;
            m_objectives.Add(destroyShipSubmission);

            var destroyGeneratorSubmission = new MyObjectiveDestroy(
                (MyTextsWrapperEnum.BARTHS_MOON_CONVINCE_DESTROY_GENERATOR_Name),
                MyMissionID.BARTHS_MOON_CONVINCE_DESTROY_GENERATOR,
                (MyTextsWrapperEnum.BARTHS_MOON_CONVINCE_DESTROY_GENERATOR_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.BARTHS_MOON_CONVINCE_DESTROY_SHIP },
                new List<uint>() { /*(uint)EntityID.BaseGenerator,*/ (uint)EntityID.MainSmallShip },
                new List<uint>() { /*(uint)EntityID.EngineSpawnpoint, (uint)EntityID.EngineSpawnpoint2, */(uint)EntityID.CaveSpawnpoint1, (uint)EntityID.CaveSpawnpoint2, (uint)EntityID.CaveSpawnpoint3, (uint)EntityID.CaveSpawnpoint4 },
                showMarks: false
            ) { SaveOnSuccess = true };
            destroyGeneratorSubmission.OnMissionLoaded += DestroyGeneratorSubmissionOnLoad;
            destroyGeneratorSubmission.OnMissionSuccess += new MissionHandler(destroyGeneratorSubmission_OnMissionSuccess);
            m_objectives.Add(destroyGeneratorSubmission);
            
            var findTransmitterSubmission = new MyUseObjective(
                (MyTextsWrapperEnum.BARTHS_MOON_CONVINCE_FIND_TRANSMITTER_Name),
                MyMissionID.BARTHS_MOON_CONVINCE_FIND_TRANSMITTER,
                (MyTextsWrapperEnum.BARTHS_MOON_CONVINCE_FIND_TRANSMITTER_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.BARTHS_MOON_CONVINCE_DESTROY_GENERATOR },
                new MyMissionLocation(baseSector, (uint)EntityID.TakeTransmitterDummy),
                MyTextsWrapperEnum.PressToCollectReward,
                MyTextsWrapperEnum.Reward,
                MyTextsWrapperEnum.TransferInProgress,
                3000
            ) { SaveOnSuccess = true };

            findTransmitterSubmission.OnMissionLoaded += FindTransmitterSubmissionOnMissionLoaded;
            findTransmitterSubmission.OnMissionSuccess += FindTransmitterSubmissionOnSuccess;
            m_objectives.Add(findTransmitterSubmission);

            /*
            var flyBackSubmission = new MyBarthsMoonSubmissionTalkWithThomasBarth(
                new StringBuilder("Fly back to Barth"),
                MyMissionID.BARTHS_MOON_CONVINCE_FLY_BACK_TO_BARTH,
                new StringBuilder(""),
                this,
                new MyMissionID[] { MyMissionID.BARTHS_MOON_CONVINCE_FIND_TRANSMITTER },
                null,
                false
            ) { SaveOnSuccess = false };
            flyBackSubmission.OnMissionLoaded += FlyBackSubmissionOnLoaded;
            flyBackSubmission.OnMissionCleanUp += FlyBackSubmissionOnCleanUp;
            m_objectives.Add(flyBackSubmission);
            */
            
            var backToMadelyn = new MyObjective(
                (MyTextsWrapperEnum.BARTHS_MOON_CONVINCE_RETURN_BACK_TO_MADELYN_Name),
                MyMissionID.BARTHS_MOON_CONVINCE_RETURN_BACK_TO_MADELYN,
                (MyTextsWrapperEnum.BARTHS_MOON_CONVINCE_RETURN_BACK_TO_MADELYN_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.BARTHS_MOON_CONVINCE_FIND_TRANSMITTER },
                new MyMissionLocation(baseSector, MyMissionLocation.MADELYN_HANGAR),
                startDialogId: MyDialogueEnum.BARTHS_MOON_CONVINCE_0700,
                radiusOverride: MyMissionLocation.MADELYN_HANGAR_RADIUS
            ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudMadelynsSapho };
            m_objectives.Add(backToMadelyn);
        }
        public MyRussianTransmitterMission()
        {
            ID = MyMissionID.RUSSIAN_TRANSMITTER; /* ID must be added to MyMissions.cs */
            DebugName = new StringBuilder("17-RUF transmitter");
            Name = MyTextsWrapperEnum.RUSSIAN_TRANSMITTER;
            Description = MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_Description;
            Flags = MyMissionFlags.Story;

            MyMwcVector3Int baseSector = new MyMwcVector3Int(-4988032, 0, -865747); // Story sector of the script - i.e. (-2465,0,6541)

            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation); // Starting dummy point - must by typecasted to uint and referenced from EntityID enum

            RequiredMissions = new MyMissionID[] { MyMissionID.CHINESE_TRANSMITTER }; // IDs of missions required to make this mission available
            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.RUSSIAN_TRANSMITTER_BACK_TO_MADELYN };
            RequiredActors = new MyActorEnum[] { MyActorEnum.MADELYN, MyActorEnum.TARJA, MyActorEnum.VALENTIN };

            #region Objectives

            m_objectives = new List<MyObjective>(); // Creating of list of submissions
            
            var introDialogue = new MyObjectiveDialog(
                MyMissionID.RUSSIAN_TRANSMITTER_INTRO_DIALOGUE,
                null,
                this,
                new MyMissionID[] { },
                MyDialogueEnum.RUSSIAN_TRANSMITTER_0100_INTRO);
            m_objectives.Add(introDialogue);

            // START OF REACH OBJECTIVE SUBMISSION DEFINITION
            var reachSideEntrance = new MyObjective( // One member of that list - its type defines the type of submission - MySubmission means fly to the dummypoint to success. Here it is var so you cannot call methods on it
                MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_REACH_SIDE_ENTRANCE, // Name of the submission
                MyMissionID.RUSSIAN_TRANSMITTER_REACH_SIDE_ENTRANCE, // ID of the submission - must be added to MyMissions.cs
                MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_REACH_SIDE_ENTRANCE_Description, // Description of the submission
                null,
                this,
                new MyMissionID[] { MyMissionID.RUSSIAN_TRANSMITTER_INTRO_DIALOGUE }, // ID of submissions required to make this submission available - it is clear so this submission is the starting submission
                new MyMissionLocation(baseSector, (uint)EntityID.OutpostSideEntrance) // ID of dummy point of checkpoint
            ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudEntrance }; // False means do not save game in that checkpoint
            m_objectives.Add(reachSideEntrance); // Adding this submission to the list of submissions of current mission
            // END OF REACH OBJECTIVE SUBMISSION DEFINITION


            var enterTheBase = new MyObjective(
                  MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_ENTER_THE_BASE,
                  MyMissionID.RUSSIAN_TRANSMITTER_ENTER_THE_BASE,
                  MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_ENTER_THE_BASE_Description,
                  null,
                  this,
                  new MyMissionID[] { MyMissionID.RUSSIAN_TRANSMITTER_REACH_SIDE_ENTRANCE },
                  new MyMissionLocation(baseSector, (uint)EntityID.EnterTheBase)
              ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudEntrance };
            enterTheBase.OnMissionLoaded += new MissionHandler(enterTheBase_OnMissionLoaded);
            enterTheBase.OnMissionSuccess += new MissionHandler(enterTheBase_OnMissionSuccess);
            m_objectives.Add(enterTheBase);


            var findFrequency = new MyUseObjective(
                  MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_FIND_FREQUENCY,
                  MyMissionID.RUSSIAN_TRANSMITTER_FIND_FREQUENCY,
                  MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_FIND_FREQUENCY_Description,
                  null,
                  this,
                  new MyMissionID[] { MyMissionID.RUSSIAN_TRANSMITTER_ENTER_THE_BASE },
                  new MyMissionLocation(baseSector, (uint)EntityID.SabotageTurrets_1),
                  MyTextsWrapperEnum.PressToDownloadData,
                  MyTextsWrapperEnum.SecurityControlHUB,
                  MyTextsWrapperEnum.DownloadingData,
                  10000,
                  MyUseObjectiveType.Hacking
              ) { SaveOnSuccess = false };
            findFrequency.OnMissionLoaded += new MissionHandler(findFrequency_OnMissionLoaded);
            findFrequency.OnMissionSuccess += FindFrequency_Success;
            m_objectives.Add(findFrequency);

            m_strangerContact = new MyObjectiveDialog(
                MyTextsWrapperEnum.Null,
                MyMissionID.RUSSIAN_TRANSMITTER_STRANGER_CONTACT,
                MyTextsWrapperEnum.Null,
                null,
                this,
                new MyMissionID[] { MyMissionID.RUSSIAN_TRANSMITTER_FIND_FREQUENCY },
                MyDialogueEnum.RUSSIAN_TRANSMITTER_0500_0600_HACKPROBLEM_STRANGERCALLS
            );
            m_objectives.Add(m_strangerContact);

            var meetStranger = new MyObjective(
                 MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_MEET_STRANGER,
                 MyMissionID.RUSSIAN_TRANSMITTER_MEET_STRANGER,
                 MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_MEET_STRANGER_Description,
                 null,
                 this,
                 new MyMissionID[] { MyMissionID.RUSSIAN_TRANSMITTER_STRANGER_CONTACT },
                 new MyMissionLocation(baseSector, (uint)EntityID.ShipVolodia),
                 radiusOverride: 90f
             ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudStranger };
            meetStranger.OnMissionLoaded += MeetStranger_Loaded;
            meetStranger.OnMissionSuccess += MeetStranger_Success;
            m_objectives.Add(meetStranger);



            var reachWarehouse = new MyObjective(
                MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_REACH_WAREHOUSE,
               MyMissionID.RUSSIAN_TRANSMITTER_REACH_WAREHOUSE,
               MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_REACH_WAREHOUSE_Description,
               null,
               this,
               new MyMissionID[] { MyMissionID.RUSSIAN_TRANSMITTER_MEET_STRANGER },
               new MyMissionLocation(baseSector, (uint)EntityID.ReachWarehouse)
            ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudWarehouse };
            reachWarehouse.OnMissionLoaded += new MissionHandler(ReachWarehouse_Loaded);
            m_objectives.Add(reachWarehouse);


            var stealMilitarySupply = new MyUseObjective(
                MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_STEAL_MILITARY_SUPPLY,
                MyMissionID.RUSSIAN_TRANSMITTER_STEAL_MILITARY_SUPPLY,
                MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_STEAL_MILITARY_SUPPLY_Description,
                null,
                this,
                new MyMissionID[] { MyMissionID.RUSSIAN_TRANSMITTER_REACH_WAREHOUSE },
                new MyMissionLocation(baseSector, (uint)EntityID.StealMilitarySupply),
                MyTextsWrapperEnum.PressToTakeCargo,
                MyTextsWrapperEnum.CargoBox,
                MyTextsWrapperEnum.TakingInProgress,
                1000,
                MyUseObjectiveType.Activating
            ) { SaveOnSuccess = false };
            stealMilitarySupply.OnMissionSuccess += new MissionHandler(StealMilitarySupply_Success);
            m_objectives.Add(stealMilitarySupply);


            m_tradeWithVolodia = new MyObjective(
               MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_TRADE_WITH_VOLODIA,
               MyMissionID.RUSSIAN_TRANSMITTER_TRADE_WITH_VOLODIA,
               MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_TRADE_WITH_VOLODIA_Description,
               null,
               this,
               new MyMissionID[] { MyMissionID.RUSSIAN_TRANSMITTER_STEAL_MILITARY_SUPPLY },
               new MyMissionLocation(baseSector, (uint)EntityID.ShipVolodia),
               radiusOverride: 90
            ) { SaveOnSuccess = true, SuccessDialogId = MyDialogueEnum.RUSSIAN_TRANSMITTER_1000_VOLODIA_FOUND, HudName = MyTextsWrapperEnum.Volodia };
            m_tradeWithVolodia.OnMissionSuccess += TradeWithVolodia_Success;
            m_objectives.Add(m_tradeWithVolodia);


            m_fightRussianCommando = new MyObjectiveDestroy(
                MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_FIGHT_RUSSIAN_COMMANDO,
               MyMissionID.RUSSIAN_TRANSMITTER_FIGHT_RUSSIAN_COMMANDO,
               MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_FIGHT_RUSSIAN_COMMANDO_Description,
               null,
               this,
               new MyMissionID[] { MyMissionID.RUSSIAN_TRANSMITTER_TRADE_WITH_VOLODIA },
               //new List<uint> { (uint)EntityID.MothershipEntity },
               new List<uint> { },
               new List<uint> { (uint)EntityID.CommandoSpawnPoint },
               false
            ) { SaveOnSuccess = false, SuccessDialogId = MyDialogueEnum.RUSSIAN_TRANSMITTER_1400_RETREAT, HudName = MyTextsWrapperEnum.Nothing };
            m_fightRussianCommando.OnMissionLoaded += RussianCommandoLoaded;
            m_fightRussianCommando.OnMissionSuccess += new MissionHandler(FightRussianCommando_Success);
            m_objectives.Add(m_fightRussianCommando);


            var backToTransmitter = new MyObjective(
                    MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_BACK_TO_TRANSMITTER,
                   MyMissionID.RUSSIAN_TRANSMITTER_BACK_TO_TRANSMITTER,
                   MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_BACK_TO_TRANSMITTER_Description,
                   null,
                   this,
                   new MyMissionID[] { MyMissionID.RUSSIAN_TRANSMITTER_FIGHT_RUSSIAN_COMMANDO }, // prerekvizita - OPRAVIT na survive!!!
                   new MyMissionLocation(baseSector, (uint)EntityID.BackToTransmitter)
               ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudTransmitter };
            backToTransmitter.OnMissionLoaded += new MissionHandler(BackToTransmitter_Loaded);
            m_objectives.Add(backToTransmitter);


            var decryptFrequency = new MyUseObjective(
                  MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_DECRYPT_FREQUENCY,
                  MyMissionID.RUSSIAN_TRANSMITTER_DECRYPT_FREQUENCY,
                  MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_DECRYPT_FREQUENCY_Description,
                  null,
                  this,
                  new MyMissionID[] { MyMissionID.RUSSIAN_TRANSMITTER_BACK_TO_TRANSMITTER },
                  new MyMissionLocation(baseSector, (uint)EntityID.SabotageTurrets_1),
                  MyTextsWrapperEnum.PressToHack,
                  MyTextsWrapperEnum.SecurityControlHUB,
                  MyTextsWrapperEnum.HackingProgress,
                  5000,
                  MyUseObjectiveType.Hacking
              ) { SaveOnSuccess = false, SuccessDialogId = MyDialogueEnum.RUSSIAN_TRANSMITTER_1600_ITSWORKING };
            m_objectives.Add(decryptFrequency);


            var uploadData = new MyUseObjective(
                MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_UPLOAD_DATA,
                 MyMissionID.RUSSIAN_TRANSMITTER_UPLOAD_DATA,
                 MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_UPLOAD_DATA_Description,
                 null,
                 this,
                 new MyMissionID[] { MyMissionID.RUSSIAN_TRANSMITTER_DECRYPT_FREQUENCY },
                 new MyMissionLocation(baseSector, (uint)EntityID.SabotageTurrets_3),
                 MyTextsWrapperEnum.PressToHack,
                 MyTextsWrapperEnum.SecurityControlHUB,
                 MyTextsWrapperEnum.HackingProgress,
                 5000
             ) { SaveOnSuccess = false, SuccessDialogId = MyDialogueEnum.RUSSIAN_TRANSMITTER_1700_UPLOADINGSIGNAL };
            m_objectives.Add(uploadData);


            var findMainRoomEntrance = new MyObjective(
                 MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_FIND_MAIN_ROOM_ENTRANCE,
                 MyMissionID.RUSSIAN_TRANSMITTER_FIND_MAIN_ROOM_ENTRANCE,
                 MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_FIND_MAIN_ROOM_ENTRANCE_Description,
                 null,
                 this,
                 new MyMissionID[] { MyMissionID.RUSSIAN_TRANSMITTER_UPLOAD_DATA },
                 new MyMissionLocation(baseSector, (uint)EntityID.FindMainRoomEntrance)
             ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudEntrance };
            findMainRoomEntrance.OnMissionLoaded += new MissionHandler(findMainRoomEntrance_Loaded);
            m_objectives.Add(findMainRoomEntrance);


            var placeDeviceOnTransmitter = new MyUseObjective(
                MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_PLACE_DEVICE_ON_TRANSMITTER,
                MyMissionID.RUSSIAN_TRANSMITTER_PLACE_DEVICE_ON_TRANSMITTER,
                MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_PLACE_DEVICE_ON_TRANSMITTER_Description,
                null,
                this,
                new MyMissionID[] { MyMissionID.RUSSIAN_TRANSMITTER_FIND_MAIN_ROOM_ENTRANCE },
                new MyMissionLocation(baseSector, (uint)EntityID.PlaceDeviceOnTransmitter),
                MyTextsWrapperEnum.PressToPlaceDevice,
                MyTextsWrapperEnum.Transmitter,
                MyTextsWrapperEnum.PlacementInProgress,
                10000,
                MyUseObjectiveType.Building
              ) { SaveOnSuccess = false };
            placeDeviceOnTransmitter.OnMissionSuccess += new MissionHandler(PlaceDeviceOnTransmitter_Success);
            m_objectives.Add(placeDeviceOnTransmitter);


            var openDoors = new MyObjectiveEnablePrefabs(
              MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_OPEN_DOORS,
              MyMissionID.RUSSIAN_TRANSMITTER_OPEN_DOORS,
              MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_OPEN_DOORS_Description,
              null,
              this,
              new MyMissionID[] { MyMissionID.RUSSIAN_TRANSMITTER_PLACE_DEVICE_ON_TRANSMITTER },
              null,
              new List<uint> { (uint)EntityID.Hub3 },
              new List<uint> { (uint)EntityID.Door1, (uint)EntityID.Door2, (uint)EntityID.Door3, (uint)EntityID.Door4, }
            ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudHub };
            openDoors.OnMissionSuccess += new MissionHandler(OpenDoors_Success);
            m_objectives.Add(openDoors);


            var backToMadelyn = new MyObjective(
                MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_BACK_TO_MADELYN,
                MyMissionID.RUSSIAN_TRANSMITTER_BACK_TO_MADELYN,
                MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_BACK_TO_MADELYN_Description,
                null,
                this,
                new MyMissionID[] { MyMissionID.RUSSIAN_TRANSMITTER_OPEN_DOORS },
                new MyMissionLocation(baseSector, MyMissionLocation.MADELYN_HANGAR),
                radiusOverride: MyMissionLocation.MADELYN_HANGAR_RADIUS
            ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudMadelynsSapho };
            backToMadelyn.OnMissionSuccess += new MissionHandler(BackToMadelyn_Success);
            m_objectives.Add(backToMadelyn);

            #endregion

        }
Example #23
0
        public MyBarthsMoonConvinceMission()
            : base(
                MyMissionID.BARTHS_MOON_CONVINCE,
                new StringBuilder("03-Barth's moon convince"),
                MyTextsWrapperEnum.BARTHS_MOON_CONVINCE,
                MyTextsWrapperEnum.BARTHS_MOON_CONVINCE_Description,
                new MyMissionID[] { MyMissionID.LAIKA },
                new EntityID[] {},
                EntityID.PlayerStartLocationConvince
                )
        {
            RequiredMissions           = new MyMissionID[] { MyMissionID.LAIKA };
            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.BARTHS_MOON_CONVINCE_RETURN_BACK_TO_MADELYN };
            RequiredActors             = new MyActorEnum[] { MyActorEnum.MARCUS, MyActorEnum.MADELYN };
            AchievementName            = MySteamAchievementNames.Mission03_Barths;

            m_objectives = new List <MyObjective>();

            var meetThomasBarth = new MyObjective(
                (MyTextsWrapperEnum.BARTHS_MOON_CONVINCE_MEET_THOMAS_BART_Name),
                MyMissionID.BARTHS_MOON_CONVINCE_MEET_THOMAS_BART,
                (MyTextsWrapperEnum.BARTHS_MOON_CONVINCE_MEET_THOMAS_BART_Description),
                null,
                this,
                new MyMissionID[] {},
                new MyMissionLocation(baseSector, (uint)EntityID.ThomasBartId),
                startDialogId: MyDialogueEnum.BARTHS_MOON_CONVINCE_0100,
                radiusOverride: 50
                )
            {
                SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudBarth
            };

            meetThomasBarth.OnMissionLoaded  += MeetThomasBarthOnLoaded;
            meetThomasBarth.OnMissionCleanUp += MeetThomasBarthOnUnload;
            m_objectives.Add(meetThomasBarth);

            var talkWithThomasBarth = new MyBarthsMoonSubmissionTalkWithThomasBarth(
                (MyTextsWrapperEnum.BARTHS_MOON_CONVINCE_TALK_WITH_THOMAS_BART_Name),
                MyMissionID.BARTHS_MOON_CONVINCE_TALK_WITH_THOMAS_BART,
                (MyTextsWrapperEnum.BARTHS_MOON_CONVINCE_TALK_WITH_THOMAS_BART_Description),
                this,
                new MyMissionID[] { MyMissionID.BARTHS_MOON_CONVINCE_MEET_THOMAS_BART },
                MyDialogueEnum.BARTHS_MOON_CONVINCE_0300,
                true
                )
            {
                SaveOnSuccess = false
            };

            m_objectives.Add(talkWithThomasBarth);

            var flyToEnemyBase = new MyObjective(
                (MyTextsWrapperEnum.BARTHS_MOON_CONVINCE_FLY_TO_ENEMY_BASE_Name),
                MyMissionID.BARTHS_MOON_CONVINCE_FLY_TO_ENEMY_BASE,
                (MyTextsWrapperEnum.BARTHS_MOON_CONVINCE_FLY_TO_ENEMY_BASE_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.BARTHS_MOON_CONVINCE_TALK_WITH_THOMAS_BART },
                new MyMissionLocation(baseSector, (uint)EntityID.FlyToEnemyBaseSubmissionLocation),
                null,
                successDialogId: MyDialogueEnum.BARTHS_MOON_CONVINCE_0500,
                startDialogId: MyDialogueEnum.BARTHS_MOON_CONVINCE_0400
                )
            {
                SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudEnemyBase
            };

            flyToEnemyBase.OnMissionLoaded  += FlyToEnemyBaseOnLoaded;
            flyToEnemyBase.OnMissionCleanUp += FlyToEnemyBaseOnCleanUp;
            m_objectives.Add(flyToEnemyBase);

            var destroyShipSubmission = new MyObjectiveDestroy(
                (MyTextsWrapperEnum.BARTHS_MOON_CONVINCE_DESTROY_SHIP_Name),
                MyMissionID.BARTHS_MOON_CONVINCE_DESTROY_SHIP,
                (MyTextsWrapperEnum.BARTHS_MOON_CONVINCE_DESTROY_SHIP_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.BARTHS_MOON_CONVINCE_FLY_TO_ENEMY_BASE },
                new List <uint>()
            {
                (uint)EntityID.ShipGenerator
            },
                new List <uint>()
            {
            },
                startDialogID: MyDialogueEnum.BARTHS_MOON_CONVINCE_0600
                )
            {
                SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudGenerator
            };

            destroyShipSubmission.OnMissionLoaded += DestroyShipSubmissionOnLoad;
            m_objectives.Add(destroyShipSubmission);

            var destroyGeneratorSubmission = new MyObjectiveDestroy(
                (MyTextsWrapperEnum.BARTHS_MOON_CONVINCE_DESTROY_GENERATOR_Name),
                MyMissionID.BARTHS_MOON_CONVINCE_DESTROY_GENERATOR,
                (MyTextsWrapperEnum.BARTHS_MOON_CONVINCE_DESTROY_GENERATOR_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.BARTHS_MOON_CONVINCE_DESTROY_SHIP },
                new List <uint>() /*(uint)EntityID.BaseGenerator,*/ (
            {
                uint)EntityID.MainSmallShip
            },
        public MySmallPirateBase()
        {
            ID          = MyMissionID.PIRATE_BASE_1;              /* ID must be added to MyMissions.cs */
            Name        = new StringBuilder("Small pirate base"); // Nazev mise
            Description = new StringBuilder(                      // popis mise
                "Destroy the station\n"
                );

            MyMwcVector3Int baseSector = new MyMwcVector3Int(14393995, 0, 2939339); // Story sector of the script

            Location = new MyMissionLocation(baseSector, 1649);                     // Starting dummy point

            RequiredMissions = new MyMissionID[] { };                               // mise ktere musi byt splneny pred prijetim teto mise

            m_submissions = new List <MyObjective>();                               // Creating of list of submissions
            // START DEFINICE SUBMISE


            /*DestroyPipes1 = new MySubmissionDestroy( // Var is used to call functions on that member
             *  new StringBuilder("Destroy pipes"),
             *  MyMissionID.NEW_STORY_M230_DESTROY_PIPES_1,
             *  new StringBuilder(""),
             *  null,
             *  this,
             *  new MyMissionID[] { },
             *  new List<uint> { 563, 1859, 415 },
             *  new List<uint> { },
             *  false
             * ) { SaveOnSuccess = false };
             * m_submissions.Add(DestroyPipes1); // pridani do seznamu submisi
             * DestroyPipes1.OnMissionSuccess += new Missions.OnMissionSuccess(DestroyMSSuccess);*/

            var findCIC = new MyObjective(                 // One member of that list - je to MySubmission takze cilem je doletet do checkpointu
                new StringBuilder("Find the generator"),   // nazev submise
                MyMissionID.PIRATE_BASE_1_DESTROY_PIPES_1, // id submise
                new StringBuilder(""),                     // popis submise
                null,
                this,
                new MyMissionID[] { },                  // ID submisi ktere musi byt splneny - je to prazdne takze je to prvni submise
                new MyMissionLocation(baseSector, 2271) // ID of dummy point of checkpoint
                )
            {
                SaveOnSuccess = false
            };                                         // nastaveni save na checkpointu nebo ne

            m_submissions.Add(findCIC);                // pridani do seznamu submisi

            DestroyGenerator = new MyObjectiveDestroy( // Var is used to call functions on that member
                new StringBuilder("Destroy the generator"),
                MyMissionID.PIRATE_BASE_1_DESTROY_GENERATOR,
                new StringBuilder(""),
                null,
                this,
                new MyMissionID[] {  },
                new List <uint> {
                328
            },
                new List <uint> {
            },
                false
                )
            {
                SaveOnSuccess = false
            };
            m_submissions.Add(DestroyGenerator); // pridani do seznamu submisi
            DestroyGenerator.OnMissionSuccess += new MissionHandler(DestroyMSSuccess);

            var escape = new MyObjective(                       // One member of that list - je to MySubmission takze cilem je doletet do checkpointu
                new StringBuilder("Return to your mothership"), // nazev submise
                MyMissionID.SMALL_PIRATE_BASE_2_KILL_GENERAL,   // id submise
                new StringBuilder(""),                          // popis submise
                null,
                this,
                new MyMissionID[] { MyMissionID.PIRATE_BASE_1_DESTROY_GENERATOR, MyMissionID.PIRATE_BASE_1_DESTROY_PIPES_1, }, // ID submisi ktere musi byt splneny - je to prazdne takze je to prvni submise
                new MyMissionLocation(baseSector, 18414)
                )
            {
                SaveOnSuccess = false
            };                         // nastaveni save na checkpointu nebo ne

            m_submissions.Add(escape); // pridani do seznamu submisi
        }
        //private MySubmisisonDefend m_defendGenerator;

        #endregion

        public MySlaverBaseMission()
        {
            m_ValidateIDlists = new List<List<uint>>();
            m_ValidateIDlists.Add(m_closeddoors);
            m_ValidateIDlists.Add(m_finalparticle);
            m_ValidateIDlists.Add(m_openedddoors);
            m_ValidateIDlists.Add(m_standbyparticle);
            m_ValidateIDlists.Add(m_pilotsSpawn);
            m_ValidateIDlists.Add(m_closeentiites);
            ID = MyMissionID.SLAVER_BASE_1; /* ID must be added to MyMissions.cs */
            Name = MyTextsWrapperEnum.SLAVER_BASE_GRAND_BURROW;
            Description = MyTextsWrapperEnum.SLAVER_BASE_GRAND_BURROW_Description;
            DebugName = new StringBuilder("09b-Slaver base Grand Burrow"); // Nazev mise

            Flags = MyMissionFlags.Story;

            MyMwcVector3Int baseSector = new MyMwcVector3Int(2052452, 0, -10533886); // Story sector of the script

            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation); // Starting dummy point

            RequiredMissions = new MyMissionID[] { MyMissionID.FORT_VALIANT }; // mise ktere musi byt splneny pred prijetim teto mise
            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.SLAVER_BASE_1_DIALOG_10 };
            RequiredActors = new MyActorEnum[] { MyActorEnum.MARCUS, MyActorEnum.MADELYN, MyActorEnum.TARJA, MyActorEnum.VALENTIN };

            m_objectives = new List<MyObjective>(); // Creating of list of submissions


            // -------------- START DEFINICE SUBMISE ---------------------

            var talkWith = new MyObjectiveDialog(
                (MyTextsWrapperEnum.SLAVER_BASE_1_DIALOG_1_Name),
                MyMissionID.SLAVER_BASE_1_DIALOG_1,
                (MyTextsWrapperEnum.SLAVER_BASE_1_DIALOG_1_Description),
                null,
                this,
                new MyMissionID[] { },
                dialogId: MyDialogueEnum.SLAVERBASE_0100_INTRODUCE
                ) { SaveOnSuccess = false };
            m_objectives.Add(talkWith);


            var DestroyGenerators = new MyObjectiveDestroy(
                // Var is used to call functions on that member
                (MyTextsWrapperEnum.SLAVER_BASE_1_DESTROY_GENERATOR_Name),
                MyMissionID.SLAVER_BASE_1_DESTROY_GENERATOR,
                (MyTextsWrapperEnum.SLAVER_BASE_1_DESTROY_GENERATOR_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.SLAVER_BASE_1_DIALOG_1 },
                Generators,
                false
                ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudGenerator };
            m_objectives.Add(DestroyGenerators); // pridani do seznamu submisi
            DestroyGenerators.OnMissionSuccess += DestroyGeneratorMSSuccess;


            var talkWith2 = new MyObjectiveDialog(
                (MyTextsWrapperEnum.SLAVER_BASE_1_DIALOG_2_Name),
                MyMissionID.SLAVER_BASE_1_DIALOG_2,
                (MyTextsWrapperEnum.SLAVER_BASE_1_DIALOG_2_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.SLAVER_BASE_1_DESTROY_GENERATOR },
                dialogId: MyDialogueEnum.SLAVERBASE_0200_GENERATORS_DESTROYED
                ) { SaveOnSuccess = false };
            m_objectives.Add(talkWith2);


            var DestroyBatteries = new MyObjectiveDestroy(
                // Var is used to call functions on that member

                (MyTextsWrapperEnum.SLAVER_BASE_1_DESTROY_BATTERIES_Name),
                MyMissionID.SLAVER_BASE_1_DESTROY_BATTERIES,
                (MyTextsWrapperEnum.SLAVER_BASE_1_DESTROY_BATTERIES_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.SLAVER_BASE_1_DIALOG_2 },
                Batteries,
                false
                ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudBatteries };
            m_objectives.Add(DestroyBatteries); // pridani do seznamu submisi
            DestroyBatteries.OnMissionSuccess += DestroyBatteriesMSSuccess;


            var FindPrison = new MyObjective( // One member of that list - je to MyObjective takze cilem je doletet do checkpointu
                (MyTextsWrapperEnum.SLAVER_BASE_1_FIND_PRISON_Name), // nazev submise
                MyMissionID.SLAVER_BASE_1_FIND_PRISON, // id submise
                (MyTextsWrapperEnum.SLAVER_BASE_1_FIND_PRISON_Description), // popis submise
                null,
                this,
                new MyMissionID[] { MyMissionID.SLAVER_BASE_1_DESTROY_BATTERIES }, // ID submisi ktere musi byt splneny - je to prazdne takze je to prvni submise
                new MyMissionLocation(baseSector, (uint)EntityID.Prison_Dummy),
                startDialogId: MyDialogueEnum.SLAVERBASE_0300_BATTERIES_DESTROYED// ID of dummy point of checkpoint
                ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudPrison }; // nastaveni save na checkpointu nebo ne
            m_objectives.Add(FindPrison); // pridani do seznamu submisi
            FindPrison.OnMissionSuccess += FindPrisonMSSuccess;


            m_freeSlaves = new MyObjectiveDestroy(
                // Var is used to call functions on that member
                (MyTextsWrapperEnum.SLAVER_BASE_1_FREE_SLAVES_Name),
                MyMissionID.SLAVER_BASE_1_FREE_SLAVES,
                (MyTextsWrapperEnum.SLAVER_BASE_1_FREE_SLAVES_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.SLAVER_BASE_1_FIND_PRISON },
                m_Bars,
                false
                ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudCage };
            m_objectives.Add(m_freeSlaves); // pridani do seznamu submisi


            var talkWith4 = new MyObjectiveDialog(
                MyMissionID.SLAVER_BASE_1_DIALOG_4,
                null,
                this,
                new MyMissionID[] { MyMissionID.SLAVER_BASE_1_FREE_SLAVES },
                dialogId: MyDialogueEnum.SLAVERBASE_0400_SLAVES_SAVED
                ) { SaveOnSuccess = true };
            m_objectives.Add(talkWith4);


            m_hackHangar = new MyObjectiveEnablePrefabs(
                (MyTextsWrapperEnum.SLAVER_BASE_1_HACK_HANGAR_Name),
                MyMissionID.SLAVER_BASE_1_HACK_HANGAR,
                (MyTextsWrapperEnum.SLAVER_BASE_1_HACK_HANGAR_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.SLAVER_BASE_1_DIALOG_4 },
                null,
                new List<uint> { (uint)EntityID.Hack_PC },
                new List<uint> { (uint)EntityID.Hangar_Doors }
                ) { HudName = MyTextsWrapperEnum.HudHub };
            m_objectives.Add(m_hackHangar);
            m_hackHangar.OnMissionSuccess += HangarOpen;

            m_freeSlavesMS = new MyObjectiveDestroy( // Var is used to call functions on that member
               (MyTextsWrapperEnum.SLAVER_BASE_1_FREE_SLAVES_2_Name),
               MyMissionID.SLAVER_BASE_1_FREE_SLAVES_2,
               (MyTextsWrapperEnum.SLAVER_BASE_1_FREE_SLAVES_2_Description),
               null,
               this,
               new MyMissionID[] { MyMissionID.SLAVER_BASE_1_HACK_HANGAR },
               Mothership_Bars,
               false
           ) { SaveOnSuccess = false, ToDestroyCount = 1, HudName = MyTextsWrapperEnum.HudCage };
            m_objectives.Add(m_freeSlavesMS); // pridani do seznamu submisi


            var talkWith6 = new MyObjectiveDialog(
                (MyTextsWrapperEnum.SLAVER_BASE_1_DIALOG_6_Name),
                MyMissionID.SLAVER_BASE_1_DIALOG_6,
                (MyTextsWrapperEnum.SLAVER_BASE_1_DIALOG_6_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.SLAVER_BASE_1_FREE_SLAVES_2, },
                dialogId: MyDialogueEnum.SLAVERBASE_0600_MOTHERSHIP_EMPTY
                ) { SaveOnSuccess = false };
            m_objectives.Add(talkWith6);


            var findSlaves = new MyObjectiveDestroy(
                // Var is used to call functions on that member
                (MyTextsWrapperEnum.SLAVER_BASE_1_FIND_SLAVES_Name),
                MyMissionID.SLAVER_BASE_1_FIND_SLAVES,
                (MyTextsWrapperEnum.SLAVER_BASE_1_FIND_SLAVES_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.SLAVER_BASE_1_DIALOG_6 },
                bar_pit,
                // ID of dummy point of checkpoint
                false
                ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudCage };
            findSlaves.MissionEntityIDs.Add((uint)EntityID.Bar_pit);
            m_objectives.Add(findSlaves); // pridani do seznamu submisi


            var talkWith7 = new MyObjectiveDialog(
                (MyTextsWrapperEnum.SLAVER_BASE_1_DIALOG_7_Name),
                MyMissionID.SLAVER_BASE_1_DIALOG_7,
                (MyTextsWrapperEnum.SLAVER_BASE_1_DIALOG_7_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.SLAVER_BASE_1_FIND_SLAVES, },
                dialogId: MyDialogueEnum.SLAVERBASE_0700_PIT_EMPTY
                ) { SaveOnSuccess = false };
            m_objectives.Add(talkWith7);
            talkWith7.OnMissionLoaded += FreePilotsMSSuccess;


            var destroyEnemies = new MyDestroyWavesObjective(
                // Var is used to call functions on that member
                (MyTextsWrapperEnum.SLAVER_BASE_1_DESTROY_ENEMIES_Name),
                MyMissionID.SLAVER_BASE_1_DESTROY_ENEMIES,
                (MyTextsWrapperEnum.SLAVER_BASE_1_DESTROY_ENEMIES_Description),
                null,
                this,
                new[] { MyMissionID.SLAVER_BASE_1_DIALOG_7 }
                //new List<uint>
                //    {
                //        (uint) EntityID.Mothership_Spawn_1,
                //        (uint) EntityID.Mothership_Spawn_2,
                //        (uint) EntityID.Mothership_Spawn_3
                //    },
                ) { SaveOnSuccess = false };
            destroyEnemies.AddWave(new List<uint> { (uint)EntityID.Mothership_Spawn_1 });
            destroyEnemies.AddWave(new List<uint> { (uint)EntityID.Mothership_Spawn_2 });
            destroyEnemies.AddWave(new List<uint> { (uint)EntityID.Mothership_Spawn_3 });
            destroyEnemies.OnMissionSuccess += EnemiesDestroyed;
            m_objectives.Add(destroyEnemies); // pridani do seznamu submisi

            var talkWith9 = new MyObjectiveDialog(
                (MyTextsWrapperEnum.SLAVER_BASE_1_DIALOG_9_Name),
                MyMissionID.SLAVER_BASE_1_DIALOG_9,
                (MyTextsWrapperEnum.SLAVER_BASE_1_DIALOG_9_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.SLAVER_BASE_1_DESTROY_ENEMIES },
                dialogId: MyDialogueEnum.SLAVERBASE_0800_ENEMIES_DESTROYED
                ) { SaveOnSuccess = false };
            m_objectives.Add(talkWith9);


            m_openHangarDoors = new MyObjectiveEnablePrefabs(
                (MyTextsWrapperEnum.SLAVER_BASE_1_HACK_NUKE_Name),
                MyMissionID.SLAVER_BASE_1_HACK_NUKE,
                (MyTextsWrapperEnum.SLAVER_BASE_1_HACK_NUKE_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.SLAVER_BASE_1_DIALOG_9 },
                null,
                new List<uint> { (uint)EntityID.HangarDoorsHub },
                new List<uint> { (uint)EntityID.Cargo_Bay_Doors }
                ) { HudName = MyTextsWrapperEnum.HudHub };
            m_objectives.Add(m_openHangarDoors);
            m_openHangarDoors.OnMissionSuccess += MSEscape;
            m_openHangarDoors.OnMissionSuccess += MoveFourthReichMSStart;
          


            var talkWith10 = new MyTimedObjective(
                (MyTextsWrapperEnum.SLAVER_BASE_1_DIALOG_10_Name),
                MyMissionID.SLAVER_BASE_1_DIALOG_10,
                (MyTextsWrapperEnum.SLAVER_BASE_1_DIALOG_10_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.SLAVER_BASE_1_HACK_NUKE },
                TimeSpan.FromSeconds(50)
                )
                {
                    SaveOnSuccess = false,
                    SuccessDialogId = MyDialogueEnum.SLAVERBASE_1100_FAKE_ESCAPED,
                    DisplayCounter = false,
                };
            talkWith10.MissionEntityIDs.Add((uint) EntityID.Escape_Dummy);
            m_objectives.Add(talkWith10);
        }
Example #26
0
        public MyRiftMission()
        {
            m_subShakeAction     = new MyTimerActionDelegate(SubShake);
            m_farExplosionAction = new MyTimerActionDelegate(FarExplosion);

            ID              = MyMissionID.RIFT; /* ID must be added to MyMissions.cs */
            DebugName       = new StringBuilder("14-Rift");
            Name            = Localization.MyTextsWrapperEnum.RIFT;
            Description     = Localization.MyTextsWrapperEnum.RIFT_Description;
            Flags           = MyMissionFlags.Story;
            AchievementName = MySteamAchievementNames.Mission21_Rift;

            MyMwcVector3Int baseSector = new MyMwcVector3Int(-56700, 0, 4276);

            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation);

            RequiredMissions           = new MyMissionID[] { MyMissionID.JUNKYARD_EAC_AMBUSH };
            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.RIFT_GOTO_30 };
            RequiredActors             = new MyActorEnum[] { MyActorEnum.MADELYN, MyActorEnum.TARJA, MyActorEnum.VALENTIN };

            m_objectives = new List <MyObjective>();

            MySpawnpointSmartWaves spawnPointSmartWaves = new MySpawnpointSmartWaves(null, null, 2);

            var intro = new MyObjectiveDialog(
                MyMissionID.RIFT_INTRO,
                null,
                this,
                new MyMissionID[] { },
                MyDialogueEnum.RIFT_0050_INTRO
                )
            {
                SaveOnSuccess = true,
            };

            m_objectives.Add(intro);


            //Cannot see dialogues over inv.screen

            /*
             * var getSupplies = new MyObjectiveEnterInventroy(
             *  new StringBuilder("Get supplies for the journey to the Rift"),
             *  MyMissionID.RIFT_GOTO_GETSUPPLIES1,
             *  new StringBuilder("Buy whatever useful."),
             *  null,
             *  this,
             *  new MyMissionID[] { MyMissionID.RIFT_INTRO },
             *  new List<uint>() {  (uint)EntityID.Objective_Vendor }
             * )
             * {
             *  SaveOnSuccess = true,
             * };*/
            var getSupplies = new MyObjective(
                (MyTextsWrapperEnum.RIFT_GOTO_GETSUPPLIES1_Name),
                MyMissionID.RIFT_GOTO_GETSUPPLIES1,
                (MyTextsWrapperEnum.RIFT_GOTO_GETSUPPLIES1_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.RIFT_INTRO },
                new MyMissionLocation(baseSector, (uint)EntityID.Objective_Vendor),
                radiusOverride: 30
                )
            {
                SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudSupplies
            };

            getSupplies.OnMissionSuccess += GetSuppliesSubmissionSuccess;
            getSupplies.OnMissionLoaded  += GetSuppliesSubmissionLoaded;
            m_objectives.Add(getSupplies);

            var reachTheRiftSubmission = new MyObjective(
                (MyTextsWrapperEnum.RIFT_GOTO_10_Name),
                MyMissionID.RIFT_GOTO_10,
                (MyTextsWrapperEnum.RIFT_GOTO_10_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.RIFT_GOTO_GETSUPPLIES1 },
                new MyMissionLocation(baseSector, (uint)EntityID.Objective_RiftEntraceLocation)
                )
            {
                SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudRift
            };

            reachTheRiftSubmission.OnMissionLoaded  += ReachTheRiftSubmissionLoaded;
            reachTheRiftSubmission.OnMissionSuccess += ReachTheRiftSubmissionSuccess;
            m_objectives.Add(reachTheRiftSubmission);

            var getOreSubmission = new MyHarvestOreSubmission(
                (MyTextsWrapperEnum.RIFT_URANITE_Name),
                MyMissionID.RIFT_URANITE,
                (MyTextsWrapperEnum.RIFT_URANITE_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.RIFT_GOTO_10 },
                new MyMissionLocation(baseSector, (uint)EntityID.Objective_Uranite),
                MyMwcObjectBuilder_Ore_TypesEnum.URANITE,
                URANITE_TO_OBTAIN,
                successDialogId: MyDialogueEnum.RIFT_1000_MINING_DONE
                )
            {
                SaveOnSuccess = true
            };

            getOreSubmission.Components.Add(spawnPointSmartWaves);
            getOreSubmission.OnMissionLoaded  += GetOreSubmissionLoaded;
            getOreSubmission.OnMissionSuccess += GetOreSubmissionSuccess;
            m_objectives.Add(getOreSubmission);

            var returnToMothershipSubmission = new MyObjective(
                (MyTextsWrapperEnum.RIFT_GOTO_30_Name),
                MyMissionID.RIFT_GOTO_30,
                (MyTextsWrapperEnum.RIFT_GOTO_30_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.RIFT_URANITE },
                new MyMissionLocation(baseSector, MyMissionLocation.MADELYN_HANGAR),
                radiusOverride: MyMissionLocation.MADELYN_HANGAR_RADIUS
                )
            {
                SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudMadelynsSapho
            };

            returnToMothershipSubmission.OnMissionLoaded  += ReturnSubmissionLoaded;
            returnToMothershipSubmission.OnMissionSuccess += ReturnSubmissionSuccess;
            m_objectives.Add(returnToMothershipSubmission);

            //m_subShakeAction = SubShake;
            //m_farExplosionAction = FarExplosion;
        }
        public MyFortValiantMission():base()
        {
            ID = MyMissionID.FORT_VALIANT; /* ID must be added to MyMissions.cs */
            Name = MyTextsWrapperEnum.FORT_VALIANT;
            Description = MyTextsWrapperEnum.FORT_VALIANT_Description;
            DebugName = new StringBuilder("09a-Fort Valiant A"); // Name of mission
            RequiredMissions = new MyMissionID[] { MyMissionID.JUNKYARD_RETURN };
            RequiredActors = new MyActorEnum[] { MyActorEnum.MADELYN, MyActorEnum.MARCUS, MyActorEnum.TARJA, MyActorEnum.VALENTIN };
            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.FORT_VALIANT_VISIT_VENDOR };

            #region Objectives
            m_objectives = new List<MyObjective>(); // Creating of list of submissions

            var flyOne = new MyObjective(
                (MyTextsWrapperEnum.FORT_VALIANT_FLY_ONE_Name),
                MyMissionID.FORT_VALIANT_FLY_ONE,
                (MyTextsWrapperEnum.FORT_VALIANT_FLY_ONE_Description),
                null,
                this,
                new MyMissionID[] {},
                new MyMissionLocation(baseSector, (uint) EntityID.VendorSpeakDetector1),
                null,
                null,
                MyDialogueEnum.FORT_VALIANT_A_0100
            ){ SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudFortValiant };
            m_objectives.Add(flyOne);


            var speakGateKeeper = new MyMeetObjective(
                (MyTextsWrapperEnum.FORT_VALIANT_SPEAK_GATE_KEEPER_Name),
                MyMissionID.FORT_VALIANT_SPEAK_GATE_KEEPER,
                (MyTextsWrapperEnum.FORT_VALIANT_SPEAK_GATE_KEEPER_Description),
                this,
                new MyMissionID[] {MyMissionID.FORT_VALIANT_FLY_ONE},
                (uint) EntityID.DetecorGateKeeper,
                (uint) EntityID.GateKeeper,
                25,
                0.25f,
                
                MyDialogueEnum.FORT_VALIANT_A_0200,
                null,
                false
            ){SaveOnSuccess =  true, FollowMe = false};
            m_objectives.Add(speakGateKeeper);
            
            
            var speakCaptain = new MyMeetObjective(
                (MyTextsWrapperEnum.FORT_VALIANT_MEET_CAPTAIN_Name),
                MyMissionID.FORT_VALIANT_MEET_CAPTAIN,
                (MyTextsWrapperEnum.FORT_VALIANT_MEET_CAPTAIN_Description),
                this,
                new MyMissionID[] {MyMissionID.FORT_VALIANT_SPEAK_GATE_KEEPER},
                (uint) EntityID.DetectorCaptain,
                (uint) EntityID.Captain,
                50,
                0.25f,
                MyDialogueEnum.FORT_VALIANT_A_0300,
                null,
                false
                ){SaveOnSuccess = true, FollowMe = false};
            speakCaptain.OnMissionLoaded += SpeakCaptainOnOnMissionLoaded;
            speakCaptain.OnMissionSuccess += SpeakCaptainOnOnMissionSuccess;
            m_objectives.Add(speakCaptain);

            m_visitVendor = new MyObjectiveEnterInventory(
                (MyTextsWrapperEnum.FORT_VALIANT_VISIT_VENDOR_Name),
                MyMissionID.FORT_VALIANT_VISIT_VENDOR,
                (MyTextsWrapperEnum.FORT_VALIANT_VISIT_VENDOR_Description),
                null,
                this,
                new MyMissionID[] {MyMissionID.FORT_VALIANT_MEET_CAPTAIN},
                (uint)EntityID.Vendor
                );
            m_visitVendor.OnMissionLoaded += MVisitVendorOnOnMissionLoaded;
            m_objectives.Add(m_visitVendor);
            #endregion
        }
        public MyAlienGateMission()
        {
            ID = MyMissionID.ALIEN_GATE;
            DebugName = new StringBuilder("22-Alien artifact");
            Name = MyTextsWrapperEnum.ALIEN_GATE;
            Description = MyTextsWrapperEnum.ALIEN_GATE_Description;
            Flags = MyMissionFlags.Story;
            AchievementName = MySteamAchievementNames.Mission31_AlienGate;

            MyMwcVector3Int baseSector = new MyMwcVector3Int(-1202900, 0, -112652); // Story sector of the script - i.e. (-2465,0,6541)

            Location = new MyMissionLocation(baseSector, (uint)EntityID.FollowCoordinatesDummy); // Starting dummy point - must by typecasted to uint and referenced from EntityID enum

            RequiredMissions = new MyMissionID[] { MyMissionID.EAC_TRANSMITTER }; // IDs of missions required to make this mission available
            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.ALIEN_GATE_23 };
            RequiredActors = new MyActorEnum[] { MyActorEnum.MARCUS, MyActorEnum.MADELYN, MyActorEnum.TARJA, MyActorEnum.VALENTIN };

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


            var keepFormation = new MyObjective(
                (MyTextsWrapperEnum.ALIEN_GATE_RIGHT_WING_Name),
                MyMissionID.ALIEN_GATE_RIGHT_WING,
                (MyTextsWrapperEnum.ALIEN_GATE_RIGHT_WING_Description),
                null,
                this,
                new MyMissionID[] { },
                new MyMissionLocation(baseSector, (uint)EntityID.MadelynSRightWingPosition)) { HudName = MyTextsWrapperEnum.HudLeftWing };
            m_objectives.Add(keepFormation);


            m_followCords = new MyDestroyWavesObjective(
                (MyTextsWrapperEnum.ALIEN_GATE_FOLLOW_COORDINATES_Name),
                MyMissionID.ALIEN_GATE_FOLLOW_COORDINATES,
                (MyTextsWrapperEnum.ALIEN_GATE_FOLLOW_COORDINATES_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.ALIEN_GATE_RIGHT_WING, },
                new List<uint>() { },
                new MyMissionLocation(baseSector, (uint)EntityID.FollowCoordinatesDummy),
                radiusOverride: 150) { StartDialogId = MyDialogueEnum.ALIEN_GATE_0100, SuccessDialogId = MyDialogueEnum.ALIEN_GATE_0300 };
            m_followCords.AddWave(new List<uint>() { (uint)EntityID.FollowCoordinatesSpawnPoint });
            m_followCords.OnMissionLoaded += M01FollowCordsOnOnMissionLoaded;
            m_followCords.OnMissionSuccess += M01FollowCordsOnOnMissionSuccess;
            m_followCords.Components.Add(new MyMovingEntity("Madelyn", (uint)EntityID.FollowCoordinatesDummy, FollowCoordinatesMadelynTime));
            m_objectives.Add(m_followCords);


            var continueSearching = new MyObjective(
                (MyTextsWrapperEnum.ALIEN_GATE_CONTINUE_SEARCHING_Name),
                MyMissionID.ALIEN_GATE_CONTINUE_SEARCHING,
                (MyTextsWrapperEnum.ALIEN_GATE_CONTINUE_SEARCHING_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.ALIEN_GATE_FOLLOW_COORDINATES },
                new MyMissionLocation(baseSector, (uint)EntityID.ContinueSearchingDummy)
                ) { SaveOnSuccess = false, SuccessDialogId = MyDialogueEnum.ALIEN_GATE_0400, HudName = MyTextsWrapperEnum.HudSearch };
            continueSearching.Components.Add(new MyMovingEntity("Madelyn", (uint)EntityID.ContinueSearchingDummy, ContinueSearchingMadelynTime));
            m_objectives.Add(continueSearching);


            var followDirection = new MyObjective(
                (MyTextsWrapperEnum.ALIEN_GATE_FOLLOW_DIRECTION_Name),
                MyMissionID.ALIEN_GATE_FOLLOW_DIRECTION,
                (MyTextsWrapperEnum.ALIEN_GATE_FOLLOW_DIRECTION_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.ALIEN_GATE_CONTINUE_SEARCHING },
                new MyMissionLocation(baseSector, (uint)EntityID.FollowDirectionDummy)) { HudName = MyTextsWrapperEnum.HudFollow };
            followDirection.OnMissionLoaded += M03FollowDirectionOnOnMissionLoaded;
            followDirection.OnMissionCleanUp += M03FollowDirectionOnOnMissionCleanUp;
            m_objectives.Add(followDirection);


            m_coughtInTrap = new MyObjectiveDialog
                (MyTextsWrapperEnum.ALIEN_GATE_COUGHT_IN_TRAP_Name,
                 MyMissionID.ALIEN_GATE_COUGHT_IN_TRAP,
                 MyTextsWrapperEnum.ALIEN_GATE_COUGHT_IN_TRAP_Description,
                 null,
                 this,
                 new MyMissionID[] { MyMissionID.ALIEN_GATE_FOLLOW_DIRECTION },
                 MyDialogueEnum.ALIEN_GATE_0500
                 ) { Location = new MyMissionLocation(baseSector, (uint)EntityID.CoughtInTrapDummy), SaveOnSuccess = true };
            m_coughtInTrap.OnMissionLoaded += M04CoughtInTrapOnOnMissionLoaded;
            m_coughtInTrap.Components.Add(new MyMovingEntity((uint)EntityID.CoughtInTrapShip1, (uint)EntityID.CoughtInTrapShip1Target, CoughtInTrapMoveTime));
            m_coughtInTrap.Components.Add(new MyMovingEntity((uint)EntityID.CoughtInTrapShip2, (uint)EntityID.CoughtInTrapShip2Target, CoughtInTrapMoveTime));
            m_coughtInTrap.Components.Add(new MyMovingEntity((uint)EntityID.CoughtInTrapShip3, (uint)EntityID.CoughtInTrapShip3Target, CoughtInTrapMoveTime));
            m_objectives.Add(m_coughtInTrap);
            



            m_runForYourLife = new MyTimedObjective
                ((MyTextsWrapperEnum.ALIEN_GATE_RUN_FOR_LIFE_Name),
                 MyMissionID.ALIEN_GATE_RUN_FOR_LIFE,
                 (MyTextsWrapperEnum.ALIEN_GATE_RUN_FOR_LIFE_Description),
                 null,
                 this,
                 new MyMissionID[] { MyMissionID.ALIEN_GATE_COUGHT_IN_TRAP },
                 TimeSpan.FromMilliseconds(RunForYourLifeObjectiveTime),
                 startDialogId: MyDialogueEnum.ALIEN_GATE_0600
                ) { DisplayCounter = false, Location = new MyMissionLocation(baseSector, (uint)EntityID.RunForYourLifeDummy), HudName = MyTextsWrapperEnum.HudRun };
            m_runForYourLife.OnMissionLoaded += M05RunForYourLifeOnOnMissionLoaded;
            m_runForYourLife.Components.Add(new MyMovingEntity(MyActorConstants.GetActorName(MyActorEnum.MADELYN), (uint)EntityID.RunForYourLifeShipTarget, RunForYourLifeShipMoveTime));
            m_objectives.Add(m_runForYourLife);
            
            m_regroupWithMadelyn = new MyTimedObjective(
                (MyTextsWrapperEnum.ALIEN_GATE_REGROUP_WITH_MADELYN_Name),
                MyMissionID.ALIEN_GATE_REGROUP_WITH_MADELYN,
                (MyTextsWrapperEnum.ALIEN_GATE_REGROUP_WITH_MADELYN_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.ALIEN_GATE_RUN_FOR_LIFE, },
                TimeSpan.FromMilliseconds(RegroupWithMadelynMissionTime)
            ) { DisplayCounter = false, Location = new MyMissionLocation(baseSector, (uint)EntityID.RegroupWithMadelynShip1Target), HudName = MyTextsWrapperEnum.HudRegroup, SaveOnSuccess = true };
            m_regroupWithMadelyn.OnMissionLoaded += M06RegroupWithMadelynOnOnMissionLoaded;
            m_regroupWithMadelyn.Components.Add(new MySpawnpointWaves((uint)EntityID.RegroupWithMadelynDetector, 1, new List<uint[]>()
                                                                                                         {
                                                                                                             new uint[]{(uint)EntityID.RegroupWithMadelynSpawn1},
                                                                                                             new uint[]{(uint)EntityID.RegroupWithMadelynSpawn2}
                                                                                                         }));
            m_regroupWithMadelyn.Components.Add(new MySpawnpointWaves((uint)EntityID.RegroupWithMadelynDetector2, 1, new List<uint[]>()
                                                                                                         {
                                                                                                             new uint[]{(uint)EntityID.RegroupWithMadelynSpawn3, (uint)EntityID.RegroupWithMadelynSpawn4}
                                                                                                         }));

            m_regroupWithMadelyn.Components.Add(new MyMovingEntity(MyActorConstants.GetActorName(MyActorEnum.MADELYN), (uint)EntityID.RegroupWithMadelynShip1Target, RegroupWithMadelynMissionTime));
            m_regroupWithMadelyn.Components.Add(new MyMovingEntity((uint)EntityID.CoughtInTrapShip1, (uint)EntityID.RegroupWithMadelynShip2Target, RegroupWithMadelynMissionTime));
            m_regroupWithMadelyn.Components.Add(new MyMovingEntity((uint)EntityID.CoughtInTrapShip2, (uint)EntityID.RegroupWithMadelynShip3Target, RegroupWithMadelynMissionTime));
            m_regroupWithMadelyn.Components.Add(new MyMovingEntity((uint)EntityID.CoughtInTrapShip3, (uint)EntityID.RegroupWithMadelynShip4Target, RegroupWithMadelynMissionTime));
            m_regroupWithMadelyn.Components.Add(new MyTimedDialogue(new TimeSpan(0, 0, 50), MyDialogueEnum.ALIEN_GATE_0900));
            m_regroupWithMadelyn.Components.Add(new MyDetectorDialogue((uint)EntityID.RegroupWithMadelynShip1Target, MyDialogueEnum.ALIEN_GATE_0800B));
            m_objectives.Add(m_regroupWithMadelyn);
            


            m_boardMotherShip = new MyObjective
                ((MyTextsWrapperEnum.ALIEN_GATE_BOARD_MOTHER_SHIP_Name),
                 MyMissionID.ALIEN_GATE_BOARD_MOTHER_SHIP,
                 (MyTextsWrapperEnum.ALIEN_GATE_BOARD_MOTHER_SHIP_Description),
                 null,
                 this,
                 new MyMissionID[] { MyMissionID.ALIEN_GATE_REGROUP_WITH_MADELYN, },
                 new MyMissionLocation(baseSector, (uint)EntityID.BoardmotherShipDummy)
                ) { SuccessDialogId = MyDialogueEnum.ALIEN_GATE_1100, HudName = MyTextsWrapperEnum.HudMothership };
            m_boardMotherShip.Components.Add(new MySpawnpointWaves((uint)EntityID.BoardmotherShipDetector1, 1, (uint)EntityID.BoardmotherShipSpawn1));
            m_boardMotherShip.Components.Add(new MySpawnpointWaves((uint)EntityID.BoardmotherShipDetector2, 1, (uint)EntityID.BoardmotherShipSpawn2));
            m_boardMotherShip.Components.Add(new MySpawnpointWaves((uint)EntityID.BoardmotherShipDetector3, 1, (uint)EntityID.BoardmotherShipSpawn3));
            m_boardMotherShip.Components.Add(new MyDetectorDialogue((uint)EntityID.RussianGeneralSpeak, MyDialogueEnum.ALIEN_GATE_1000));
            m_boardMotherShip.OnMissionLoaded += BoardMotherShipOnOnMissionLoaded;
            m_objectives.Add(m_boardMotherShip);

            m_hackGenerator = new MyUseObjective
                ((MyTextsWrapperEnum.ALIEN_GATE_HACK_GENERATOR_Name),
                 MyMissionID.ALIEN_GATE_HACK_GENERATOR,
                 (MyTextsWrapperEnum.ALIEN_GATE_HACK_GENERATOR_Description),
                 null,
                 this,
                 new MyMissionID[] { MyMissionID.ALIEN_GATE_BOARD_MOTHER_SHIP },
                 new MyMissionLocation(baseSector, (uint)EntityID.HackGeneratorDummy),
                 MyTextsWrapperEnum.PressToHack,
                 MyTextsWrapperEnum.Generator,
                 MyTextsWrapperEnum.StartingProgress,
                 5000
                );
            m_hackGenerator.SaveOnSuccess = true;
            m_hackGenerator.OnMissionLoaded += M08HackGeneratorOnOnMissionLoaded;
            m_hackGenerator.Components.Add(new MyTimedDialogue(new TimeSpan(0, 0, 2), MyDialogueEnum.ALIEN_GATE_1200));
            m_hackGenerator.Components.Add(new MySpawnpointWaves((uint)EntityID.HackGeneratorDetector1, 1, new List<uint[]>()
                                                                                                         {
                                                                                                             new uint[]{(uint)EntityID.HackGeneratorSpawn11},
                                                                                                             new uint[]{(uint)EntityID.HackGeneratorSpawn12}
                                                                                                         }));
            m_hackGenerator.Components.Add(new MySpawnpointWaves((uint)EntityID.HackGeneratorDetector2, 1, new List<uint[]>()
                                                                                                         {
                                                                                                             new uint[]{(uint)EntityID.HackGeneratorSpawn21},
                                                                                                             new uint[]{(uint)EntityID.HackGeneratorSpawn22}
                                                                                                         }));
            m_hackGenerator.Components.Add(new MySpawnpointWaves((uint)EntityID.HackGeneratorDetector3, 1, new List<uint[]>()
                                                                                                         {
                                                                                                             new uint[]{(uint)EntityID.HackGeneratorSpawn31,(uint)EntityID.HackGeneratorSpawn32,(uint)EntityID.HackGeneratorSpawn33},
                                                                                                         }));
            m_hackGenerator.Components.Add(new MySpawnpointWaves((uint)EntityID.HackGeneratorDetector4, 1, new List<uint[]>()
                                                                                                         {
                                                                                                             new uint[]{(uint)EntityID.HackGeneratorSpawn41,(uint)EntityID.HackGeneratorSpawn42},
                                                                                                         }));
            m_hackGenerator.Components.Add(new MySpawnpointWaves((uint)EntityID.HackGeneratorDetector5, 1, new List<uint[]>()
                                                                                                         {
                                                                                                             new uint[]{(uint)EntityID.HackGeneratorSpawn5},
                                                                                                         }));
            m_objectives.Add(m_hackGenerator);


            m_hackEngine = new MyUseObjective
                ((MyTextsWrapperEnum.ALIEN_GATE_HACK_ENGINE_Name),
                 MyMissionID.ALIEN_GATE_HACK_ENGINE,
                 (MyTextsWrapperEnum.ALIEN_GATE_HACK_ENGINE_Description),
                 null,
                 this,
                 new MyMissionID[] { MyMissionID.ALIEN_GATE_HACK_GENERATOR },
                 new MyMissionLocation(baseSector, (uint)EntityID.HackEngineDummy),
                 MyTextsWrapperEnum.PressToHack,
                 MyTextsWrapperEnum.Generator,
                 MyTextsWrapperEnum.StartingProgress,
                 5000,
                 MyUseObjectiveType.Hacking,
                 startDialogId: MyDialogueEnum.ALIEN_GATE_1300
                ) { SuccessDialogId = MyDialogueEnum.ALIEN_GATE_1500, SaveOnSuccess = true };
            m_hackEngine.OnMissionLoaded += M09HackEngineOnOnMissionLoaded;
            m_hackEngine.Components.Add(new MyDetectorDialogue((uint)EntityID.HackEngineDummy, MyDialogueEnum.ALIEN_GATE_1400));
            m_hackEngine.Components.Add(new MySpawnpointWaves((uint)EntityID.HackGeneratorDetector5, 1, new List<uint[]>()
                                                                                                         {
                                                                                                             new uint[]{(uint)EntityID.HackGeneratorSpawn5},
                                                                                                        }));

            m_hackEngine.Components.Add(new MySpawnpointWaves((uint)EntityID.HackGeneratorDetector4, 1, new List<uint[]>()
                                                                                                         {
                                                                                                             new uint[]{(uint)EntityID.HackEngineSpawn2},
                                                                                                         }));
            m_hackEngine.Components.Add(new MySpawnpointWaves((uint)EntityID.HackEngineDetector3, 1, new List<uint[]>()
                                                                                                         {
                                                                                                             new uint[]{(uint)EntityID.HackEngineSpawn3},
                                                                                                         }));
            m_hackEngine.Components.Add(new MySpawnpointWaves((uint)EntityID.HackEngineDetector4, 1, new List<uint[]>()
                                                                                                         {
                                                                                                             new uint[]{(uint)EntityID.HackEngineSpawn4},
                                                                                                         }));
            m_hackEngine.Components.Add(new MySpawnpointWaves((uint)EntityID.HackEngineDetector5, 1, new List<uint[]>()
                                                                                                         {
                                                                                                             new uint[]{(uint)EntityID.HackEngineSpawn51},
                                                                                                             new uint[]{(uint)EntityID.HackEngineSpawn52},
                                                                                                         }));
            m_hackEngine.Components.Add(new MySpawnpointWaves((uint)EntityID.HackEngineDetector6, 1, new List<uint[]>()
                                                                                                         {
                                                                                                             new uint[]{(uint)EntityID.HackEngineSpawn6},
                                                                                                         }));
            m_objectives.Add(m_hackEngine);


            m_leaveShip1 = new MyTimedReachLocationObjective
                ((MyTextsWrapperEnum.ALIEN_GATE_LEAVE_SHIP_Name),
                 MyMissionID.ALIEN_GATE_LEAVE_SHIP,
                 (MyTextsWrapperEnum.ALIEN_GATE_LEAVE_SHIP_Description),
                 null,
                 this,
                 new MyMissionID[] { MyMissionID.ALIEN_GATE_HACK_ENGINE, },
                 TimeSpan.FromMilliseconds((double)m_10ObjectiveTime),
                 new MyMissionLocation(baseSector, (uint)EntityID._10Dummy)
                ) { HudName = MyTextsWrapperEnum.Nothing };

            m_leaveShip1.OnMissionLoaded += M10LeaveShip1OnOnMissionLoaded;
            m_leaveShip1.OnMissionFailed += M10LeaveShip1OnOnMissionFailed;
            m_leaveShip1.Components.Add(new MySpawnpointWaves((uint)EntityID.HackEngineDetector4, 1, new List<uint[]>()
                                                                                                         {
                                                                                                             new uint[]{(uint)EntityID.HackEngineSpawn4},
                                                                                                        }));

            m_leaveShip1.Components.Add(new MySpawnpointWaves((uint)EntityID.HackGeneratorDetector3, 1, new List<uint[]>()
                                                                                                         {
                                                                                                             new uint[]{(uint)EntityID._10Spawn2},
                                                                                                         }));
            m_objectives.Add(m_leaveShip1);


            m_regroupWithMadelyn2 = new MyObjective(
                (MyTextsWrapperEnum.ALIEN_GATE_REGROPUP_WITH_MADELYN_Name),
                MyMissionID.ALIEN_GATE_REGROPUP_WITH_MADELYN,
                (MyTextsWrapperEnum.ALIEN_GATE_REGROPUP_WITH_MADELYN_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.ALIEN_GATE_LEAVE_SHIP, },
                new MyMissionLocation(baseSector, (uint)EntityID.RegroupWithMadelynShip1Target),
                startDialogId: MyDialogueEnum.ALIEN_GATE_1700
            ) { HudName = MyTextsWrapperEnum.HudRegroup, SaveOnSuccess = true };
            m_regroupWithMadelyn2.OnMissionLoaded += M11RegroupWithMadelyn2OnOnMissionLoaded;
            m_objectives.Add(m_regroupWithMadelyn2);

            m_shipbBoard2 = new MyObjective(
                (MyTextsWrapperEnum.ALIEN_GATE_BOARD_SECOND_Name),
                MyMissionID.ALIEN_GATE_BOARD_SECOND,
                (MyTextsWrapperEnum.ALIEN_GATE_BOARD_SECOND_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.ALIEN_GATE_REGROPUP_WITH_MADELYN, },
                new MyMissionLocation(baseSector, (uint)EntityID.BoardSecondShipbDummy)
                ) { StartDialogId = MyDialogueEnum.ALIEN_GATE_1900, HudName = MyTextsWrapperEnum.HudMothership };
            m_shipbBoard2.Components.Add(new MySpawnpointWaves((uint)EntityID.RegroupWithMadelynDetector, 1, new List<uint[]>()
                                                                                                         {
                                                                                                             new uint[]{(uint)EntityID.BoardSecondShipbSpawn1, (uint)EntityID.BoardSecondShipbSpawn2},
                                                                                                        }));
            m_shipbBoard2.OnMissionLoaded += M11BBoard2OnOnMissionLoaded;
            m_objectives.Add(m_shipbBoard2);


            m_hackGenerator2 = new MyUseObjective
                ((MyTextsWrapperEnum.ALIEN_GATE_HACK_GENERATOR2_Name),
                 MyMissionID.ALIEN_GATE_HACK_GENERATOR2,
                 (MyTextsWrapperEnum.ALIEN_GATE_HACK_GENERATOR2_Description),
                 null,
                 this,
                 new MyMissionID[] { MyMissionID.ALIEN_GATE_BOARD_SECOND },
                 new MyMissionLocation(baseSector, (uint)EntityID.HackGenerator2Dummy),
                 MyTextsWrapperEnum.PressToHack,
                 MyTextsWrapperEnum.Generator,
                 MyTextsWrapperEnum.StartingProgress,
                 5000,
                 MyUseObjectiveType.Hacking
                ) { StartDialogId = MyDialogueEnum.ALIEN_GATE_2000, SaveOnSuccess = true };
            m_hackGenerator2.OnMissionLoaded += M12HackGenerator2OnOnMissionLoaded;

            m_hackGenerator2.Components.Add(new MySpawnpointWaves((uint)EntityID.HackGenerator2Detector1, 1, new List<uint[]>()
                                                                                                         {
                                                                                                             new uint[]{(uint)EntityID.HackGenerator2Spawn11, (uint)EntityID.HackGenerator2Spawn12},
                                                                                                        }));
            m_hackGenerator2.Components.Add(new MySpawnpointWaves((uint)EntityID.HackGenerator2Detector2, 1, new List<uint[]>()
                                                                                                         {
                                                                                                             new uint[]{(uint)EntityID.HackGenerator2Spawn2},
                                                                                                        }));
            m_objectives.Add(m_hackGenerator2);


            m_hackEngine2 = new MyObjective(
                (MyTextsWrapperEnum.ALIEN_GATE_HACK_ENGINE_2_Name),
                MyMissionID.ALIEN_GATE_HACK_ENGINE_2,
                (MyTextsWrapperEnum.ALIEN_GATE_HACK_ENGINE_2_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.ALIEN_GATE_HACK_GENERATOR2 },
                new MyMissionLocation(baseSector, (uint)EntityID._13Dummy)/*,
                startDialogId: MyDialogueEnum.ALIEN_GATE_2100*/
                );
            m_hackEngine2.OnMissionLoaded += M13HackEngine2OnOnMissionLoaded;
            m_hackEngine2.Components.Add(new MySpawnpointWaves((uint)EntityID._13Detector1, 1, new List<uint[]>()
                                                                                                         {
                                                                                                             new uint[]{(uint)EntityID._13Spawn11, (uint)EntityID._13Spawn12,(uint)EntityID._13Spawn13},
                                                                                                        }));
            m_hackEngine2.Components.Add(new MySpawnpointWaves((uint)EntityID._13Detector2, 1, new List<uint[]>()
                                                                                                         {
                                                                                                             new uint[]{(uint)EntityID._13Spawn2}
                                                                                                        }));
            m_hackEngine2.Components.Add(new MySpawnpointWaves((uint)EntityID._13Detector3, 1, new List<uint[]>()
                                                                                                         {
                                                                                                             new uint[]{(uint)EntityID._13Spawn3}
                                                                                                        }));
            m_hackEngine2.Components.Add(new MySpawnpointWaves((uint)EntityID._13Detector4, 1, new List<uint[]>()
                                                                                                         {
                                                                                                             new uint[]{(uint)EntityID._13Spawn41},
                                                                                                            new uint[]{(uint)EntityID._13Spawn42}
                                                                                                        }));
            m_hackEngine2.Components.Add(new MySpawnpointWaves((uint)EntityID._13Detector5, 1, new List<uint[]>()
                                                                                                         {
                                                                                                             new uint[]{(uint)EntityID._13Spawn51},
                                                                                                            new uint[]{(uint)EntityID._13Spawn52}
                                                                                                        }));
            m_objectives.Add(m_hackEngine2);


            m_enableDoors = new MyObjectiveEnablePrefabs(
                (MyTextsWrapperEnum.ALIEN_GATE_ENABLE_DOORS_Name),
                MyMissionID.ALIEN_GATE_ENABLE_DOORS,
                (MyTextsWrapperEnum.ALIEN_GATE_ENABLE_DOORS_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.ALIEN_GATE_HACK_ENGINE_2 },
                null,
                new List<uint> { (uint)EntityID.EnableDoorsHUB },
                new List<uint> { (uint)EntityID.EnableDoorsDoors, }


                ) { HudName = MyTextsWrapperEnum.HudHub };
            m_enableDoors.Components.Add(new MySpawnpointWaves((uint)EntityID.EnableDoorsDetector, 1, new List<uint[]>()
                                                                                                         {
                                                                                                             new uint[]{(uint)EntityID.EnableDoorsSpawnPoint}
                                                                                                        }));

            m_enableDoors.Components.Add(new MyDetectorDialogue((uint)EntityID.DoorsDialogue, MyDialogueEnum.ALIEN_GATE_2200));
            m_objectives.Add(m_enableDoors);

            m_enterlaboratory = new MyObjective(
                (MyTextsWrapperEnum.ALIEN_GATE_ENTER_LAB_Name),
                MyMissionID.ALIEN_GATE_ENTER_LAB,
                (MyTextsWrapperEnum.ALIEN_GATE_ENTER_LAB_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.ALIEN_GATE_ENABLE_DOORS },
                new MyMissionLocation(baseSector, (uint)EntityID.EnterLaboratoryDummy)
                // startDialogId: m_dialog12
                ) { StartDialogId = MyDialogueEnum.ALIEN_GATE_2300, HudName = MyTextsWrapperEnum.HudLab };
            m_enterlaboratory.Components.Add(new MySpawnpointWaves((uint)EntityID.EnterLaboratoryDetector, 1, new List<uint[]>()
                                                                                                         {
                                                                                                             new uint[]{(uint)EntityID.EnterLaboratorySpawn}
                                                                                                        }));
            m_objectives.Add(m_enterlaboratory);

            m_downloadData = new MyUseObjective
                ((MyTextsWrapperEnum.ALIEN_GATE_16_Name),
                 MyMissionID.ALIEN_GATE_16,
                 (MyTextsWrapperEnum.ALIEN_GATE_16_Description),
                 null,
                 this,
                 new MyMissionID[] { MyMissionID.ALIEN_GATE_ENTER_LAB },
                 new MyMissionLocation(baseSector, (uint)EntityID._16Dummy),
                 MyTextsWrapperEnum.PressToDownloadData,
                 MyTextsWrapperEnum.DataTransfer,
                 MyTextsWrapperEnum.DownloadingData,
                 3000,
                 MyUseObjectiveType.Taking
                ) { StartDialogId = MyDialogueEnum.ALIEN_GATE_2400, SaveOnSuccess = true };
            m_objectives.Add(m_downloadData);


            m_hackGenerator3 = new MyUseObjective
                ((MyTextsWrapperEnum.ALIEN_GATE_17_Name),
                 MyMissionID.ALIEN_GATE_17,
                 (MyTextsWrapperEnum.ALIEN_GATE_17_Description),
                 null,
                 this,
                 new MyMissionID[] { MyMissionID.ALIEN_GATE_16 },
                 new MyMissionLocation(baseSector, (uint)EntityID._17Dummy),
                 MyTextsWrapperEnum.PressToHack,
                 MyTextsWrapperEnum.Generator,
                 MyTextsWrapperEnum.StartingProgress,
                 5000,
                 MyUseObjectiveType.Hacking,
                 startDialogId: MyDialogueEnum.ALIEN_GATE_2500
                );
            m_objectives.Add(m_hackGenerator3);
            m_hackGenerator3.OnMissionLoaded += M17HackGenerator3OnOnMissionLoaded;

            m_hackGenerator3.Components.Add(new MySpawnpointWaves((uint)EntityID._17Detector, 1, new List<uint[]>()
                                                                                                         {
                                                                                                             new uint[]{(uint)EntityID._17Spawn1,(uint)EntityID.EnterLaboratorySpawn}
                                                                                                        }));

            m_leaveShip = new MyTimedReachLocationObjective
                ((MyTextsWrapperEnum.ALIEN_GATE_18_Name),
                 MyMissionID.ALIEN_GATE_18,
                 (MyTextsWrapperEnum.ALIEN_GATE_18_Description),
                 null,
                 this,
                 new MyMissionID[] { MyMissionID.ALIEN_GATE_17, },
                 TimeSpan.FromMilliseconds((double)m_18ObjectiveTime),
                 new MyMissionLocation(baseSector, (uint)EntityID._18Dummy)

                ) { StartDialogId = MyDialogueEnum.ALIEN_GATE_2600, HudName = MyTextsWrapperEnum.Nothing, SaveOnSuccess = true };
            m_leaveShip.OnMissionLoaded += M18LeaveShipOnOnMissionLoaded;
            m_leaveShip.OnMissionFailed += M18LeaveShipOnOnMissionFailed;
            m_leaveShip.Components.Add(new MySpawnpointWaves((uint)EntityID._13Detector5, 1, new List<uint[]>()
                                                                                                         {
                                                                                                             new uint[]{(uint)EntityID._18Spawn1}
                                                                                                        }));
            m_objectives.Add(m_leaveShip);

            m_killReef = new MyObjective(
                (MyTextsWrapperEnum.ALIEN_GATE_19_Name),
                MyMissionID.ALIEN_GATE_19,
                (MyTextsWrapperEnum.ALIEN_GATE_19_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.ALIEN_GATE_18 },
                new MyMissionLocation(baseSector, (uint)EntityID._19Dummy)

                ) { StartDialogId = MyDialogueEnum.ALIEN_GATE_2800 };
            m_killReef.OnMissionLoaded += M19KilReefOnOnMissionLoaded;
            m_objectives.Add(m_killReef);


            m_20ReefEscape = new MyTimedObjective
                ((MyTextsWrapperEnum.ALIEN_GATE_20_Name),
                 MyMissionID.ALIEN_GATE_20,
                 (MyTextsWrapperEnum.ALIEN_GATE_20_Description),
                 null,
                 this,
                 new MyMissionID[] { MyMissionID.ALIEN_GATE_19, },
                 TimeSpan.FromMilliseconds(m_20ObjectiveTime)
                ) { HudName = MyTextsWrapperEnum.HudFrancisReef };
            m_20ReefEscape.Location = new MyMissionLocation(baseSector, (uint)EntityID._20Prefab);
            m_20ReefEscape.Components.Add(new MyMovingEntity((uint)EntityID._19Ship, (uint)EntityID._20ShipTarget, m_20ObjectiveTime));
            m_20ReefEscape.OnMissionLoaded += M20ReefEscapeOnOnMissionLoaded;
            m_20ReefEscape.OnMissionSuccess += ReefEscapeOnOnMissionSuccess;
            m_objectives.Add(m_20ReefEscape);

            m_21DestroyReef = new MyObjectiveDestroy(
                (MyTextsWrapperEnum.ALIEN_GATE_21_Name),
                MyMissionID.ALIEN_GATE_21,
                (MyTextsWrapperEnum.ALIEN_GATE_21_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.ALIEN_GATE_20 },
                new List<uint>() { (uint)EntityID._21ToDesroy }) { StartDialogId = MyDialogueEnum.ALIEN_GATE_2900, HudName = MyTextsWrapperEnum.HudFrancisReef, SaveOnSuccess = true };
            m_21DestroyReef.OnMissionLoaded += M21DestroyReefOnOnMissionLoaded;
            m_21DestroyReef.OnMissionSuccess += M21DestroyReefOnOnMissionSuccess;
            m_21DestroyReef.Components.Add(new MySpawnpointWaves((uint)EntityID._21Detector1, 1, new List<uint[]>()
                                                                                                         {
                                                                                                             new uint[]{(uint)EntityID._21SpawnPoint11},
                                                                                                             new uint[]{(uint)EntityID._21SpawnPoint12}
                                                                                                        }));
            m_21DestroyReef.Components.Add(new MyMovingEntity((uint)EntityID._21Ship2, (uint)EntityID._21Ship2Target, m_21ObjectiveMovingTime));
            m_21DestroyReef.Components.Add(new MyMovingEntity((uint)EntityID._21Particle1, (uint)EntityID._21Particle1Target, m_21ObjectiveMovingTime, false));
            m_21DestroyReef.Components.Add(new MyMovingEntity((uint)EntityID._21Particle2, (uint)EntityID._21Particle2Target, m_21ObjectiveMovingTime, false));
            //m_21DestroyReef.Components.Add(new MyTimedDialogue(TimeSpan.FromMilliseconds(m_21ObjectiveMovingTime), MyDialogueEnum.ALIEN_GATE_3100));
            m_21DestroyReef.Components.Add(new MyTimedDialogue(TimeSpan.FromMilliseconds(5000), MyDialogueEnum.ALIEN_GATE_3000));
            m_objectives.Add(m_21DestroyReef);


            m_22FlyBackTomadelyn = new MyObjective(
                (MyTextsWrapperEnum.ALIEN_GATE_22_Name),
                MyMissionID.ALIEN_GATE_22,
                (MyTextsWrapperEnum.ALIEN_GATE_22_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.ALIEN_GATE_21 },
                new MyMissionLocation(baseSector, (uint)EntityID._22Dummy),
                startDialogId: MyDialogueEnum.ALIEN_GATE_3200
                ) { HudName = MyTextsWrapperEnum.HudMeetingPoint };
            m_22FlyBackTomadelyn.OnMissionLoaded += M22FlyBackTomadelynOnOnMissionLoaded;
            m_objectives.Add(m_22FlyBackTomadelyn);

            m_23ExploreAliengate = new MyObjective(
                (MyTextsWrapperEnum.ALIEN_GATE_23_Name),
                MyMissionID.ALIEN_GATE_23,
                (MyTextsWrapperEnum.ALIEN_GATE_23_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.ALIEN_GATE_22 },
                new MyMissionLocation(baseSector, (uint)EntityID._23Dummy),
                startDialogId: MyDialogueEnum.ALIEN_GATE_3300
                ) { HudName = MyTextsWrapperEnum.Nothing };
            m_23ExploreAliengate.Components.Add(new MyMovingEntity(MyActorConstants.GetActorName(MyActorEnum.MADELYN), (uint)EntityID._23Shiptarget, 50000));
            m_23ExploreAliengate.OnMissionLoaded += M23ExploreAliengateOnOnMissionLoaded;
            m_objectives.Add(m_23ExploreAliengate);
            #endregion
        }
        public MySmallPirateBase2Mission()
        {
            ID          = MyMissionID.SMALL_PIRATE_BASE_2;          /* ID must be added to MyMissions.cs */
            DebugName   = new StringBuilder("Small pirate base 2"); // Nazev mise
            Name        = MyTextsWrapperEnum.SMALL_PIRATE_BASE_2;
            Description = MyTextsWrapperEnum.SMALL_PIRATE_BASE_2_Description;

            MyMwcVector3Int baseSector = new MyMwcVector3Int(9708260, 0, -2101810);     // Story sector of the script

            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation); // Starting dummy point

            RequiredMissions           = new MyMissionID[] { };                         // mise ktere musi byt splneny pred prijetim teto mise
            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.SMALL_PIRATE_BASE_2_KILL_GENERAL };
            RequiredActors             = new MyActorEnum[] { MyActorEnum.MARCUS, MyActorEnum.MADELYN, MyActorEnum.TARJA, MyActorEnum.VALENTIN };

            m_objectives = new List <MyObjective>(); // Creating of list of submissions
            // START DEFINICE SUBMISE

            /* DestroyEnemies = new MyObjectiveDestroy( // Var is used to call functions on that member
             *       new StringBuilder("Destroy the mothership"),
             *       MyMissionID.SMALL_PIRATE_BASE_2_DESTROY_MOTHERSHIP,
             *       new StringBuilder(""),
             *       null,
             *       this,
             *       new MyMissionID[] { },
             *       new List<uint> { (uint)EntityID.Mothership },
             *       new List<uint> { },
             *       false
             * ) { SaveOnSuccess = false };
             * m_objectives.Add(DestroyEnemies); // pridani do seznamu submisi*/

            DestroyGenerator = new MyObjectiveDestroy( // Var is used to call functions on that member
                new StringBuilder("Destroy the generators"),
                MyMissionID.SMALL_PIRATE_BASE_2_DESTROY_GENERATOR,
                new StringBuilder(""),
                null,
                this,
                new MyMissionID[] { },
                generators,
                false
                )
            {
                SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudGenerator
            };
            m_objectives.Add(DestroyGenerator); // pridani do seznamu submisi

            /*DestroyGenerator.MissionEntityIDs.Add((uint)EntityID.Generator_3);
             * DestroyGenerator.MissionEntityIDs.Add((uint)EntityID.Generator_2);
             * DestroyGenerator.MissionEntityIDs.Add((uint)EntityID.Generator);*/

            var ReturnToMothership = new MyObjective(           // One member of that list - je to MySubmission takze cilem je doletet do checkpointu
                new StringBuilder("Return to your mothership"), // nazev submise
                MyMissionID.SMALL_PIRATE_BASE_2_KILL_GENERAL,   // id submise
                new StringBuilder(""),                          // popis submise
                null,
                this,
                new MyMissionID[] { MyMissionID.SMALL_PIRATE_BASE_2_DESTROY_GENERATOR, }, // ID submisi ktere musi byt splneny - je to prazdne takze je to prvni submise
                new MyMissionLocation(baseSector, MyMissionLocation.MADELYN_HANGAR),      // ID of dummy point of checkpoint
                radiusOverride: MyMissionLocation.MADELYN_HANGAR_RADIUS
                )
            {
                SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudMadelynsSapho
            };                                    // nastaveni save na checkpointu nebo ne

            m_objectives.Add(ReturnToMothership); // pridani do seznamu submisi
        }
        public MyRimeConvinceMission()
        {
            ID          = MyMissionID.RIME_CONVINCE;    /* ID must be added to MyMissions.cs */
            DebugName   = new StringBuilder("10-Rime"); // Name of mission
            Name        = MyTextsWrapperEnum.RIME_CONVINCE;
            Description = MyTextsWrapperEnum.RIME_CONVINCE_Description;
            Flags       = MyMissionFlags.Story;

            MyMwcVector3Int baseSector = new MyMwcVector3Int(-1922856, 0, -2867519);       // Story sector of the script - i.e. (-2465,0,6541)

            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation);    // Starting dummy point - must by typecasted to uint and referenced from EntityID enum

            RequiredMissions           = new MyMissionID[] { MyMissionID.FORT_VALIANT_C }; // IDs of missions required to make this mission available
            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.RIME_CONVINCE_TALK_TO_FRANCIS };

            m_objectives   = new List <MyObjective>(); // Creating of list of submissions
            RequiredActors = new MyActorEnum[] { MyActorEnum.MADELYN, MyActorEnum.MARCUS, MyActorEnum.TARJA, MyActorEnum.VALENTIN };

            var introduction = new MyObjectiveDialog(
                MyMissionID.RIME_CONVINCE_INTRODUCTION,
                null,
                this,
                new MyMissionID[] { },
                dialogId: MyDialogueEnum.RIME_0100_INTRODUCTION
                )
            {
                SaveOnSuccess = true
            };

            m_objectives.Add(introduction);

            m_01MeetReef = new MyMeetObjective(
                (MyTextsWrapperEnum.RIME_CONVINCE_GET_FRANCIS_REEF_Name),
                MyMissionID.RIME_CONVINCE_GET_FRANCIS_REEF,
                (MyTextsWrapperEnum.RIME_CONVINCE_GET_FRANCIS_REEF_Description),
                this,
                new MyMissionID[] { MyMissionID.RIME_CONVINCE_INTRODUCTION },
                null,
                (uint)EntityID.FrancisReef,
                distanceToTalk: 300,
                slowdown: 0.25f,
                startDialogueId: MyDialogueEnum.RIME_0150_HEAD_TO_REEF,
                successDialogueId: MyDialogueEnum.RIME_0200_REEF_REACHED
                )
            {
                SaveOnSuccess = false, FollowMe = false
            };
            m_objectives.Add(m_01MeetReef);
            m_01MeetReef.OnMissionLoaded += M01MeetReefOnOnMissionLoaded;

            m_02TalkToReef = new MyObjectiveDialog(
                MyTextsWrapperEnum.Null,
                MyMissionID.RIME_CONVINCE_TALK_FRANCIS_REEF,
                MyTextsWrapperEnum.Null,
                null,
                this,
                new MyMissionID[] { MyMissionID.RIME_CONVINCE_GET_FRANCIS_REEF },
                dialogId: MyDialogueEnum.RIME_0300_TALK_TO_REEF
                )
            {
                SaveOnSuccess = true
            };
            m_objectives.Add(m_02TalkToReef);
            m_02TalkToReef.OnMissionLoaded  += M02TalkToReefOnOnMissionLoaded;
            m_02TalkToReef.OnMissionSuccess += M02TalkToReefOnOnMissionSuccess;

            m_05FlyToDuplex = new MyObjective(
                (MyTextsWrapperEnum.RIME_CONVINCE_GO_TO_DUPLEX_Name),
                MyMissionID.RIME_CONVINCE_GO_TO_DUPLEX,
                (MyTextsWrapperEnum.RIME_CONVINCE_GO_TO_DUPLEX_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.RIME_CONVINCE_TALK_FRANCIS_REEF },
                new MyMissionLocation(baseSector, (uint)EntityID.FlyToDummy),
                //startDialogId: MyDialogueEnum.RIME_0400_ON_THE_WAY,
                successDialogId: MyDialogueEnum.RIME_0500_LISTEN_TO_SUSPICIOUS
                )
            {
                SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudDuplex
            };
            m_objectives.Add(m_05FlyToDuplex);

            MyObjectiveDialog clientsTalk = new MyObjectiveDialog(
                MyMissionID.RIME_CONVINCE_CLIENTS_TALK,
                null,
                this,
                new MyMissionID[] { MyMissionID.RIME_CONVINCE_GO_TO_DUPLEX },
                dialogId: MyDialogueEnum.RIME_0600_CLIENTS_TALK);

            clientsTalk.OnMissionLoaded += delegate
            {
                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnpointClient1);
                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnpointClient2);
            };
            m_objectives.Add(clientsTalk);

            MyObjectiveDialog bouncerTalk = new MyObjectiveDialog(
                MyMissionID.RIME_CONVINCE_DUPLEX_BOUNCER,
                null,
                this,
                new MyMissionID[] { MyMissionID.RIME_CONVINCE_CLIENTS_TALK },
                dialogId: MyDialogueEnum.RIME_0700_DUPLEX_BOUNCER);

            bouncerTalk.OnMissionLoaded += delegate
            {
                MyScriptWrapper.ActivateSpawnPoint((uint)EntityID.SpawnpointBouncer);
            };
            bouncerTalk.OnMissionSuccess += delegate
            {
                MySmallShipBot bouncer = MyScriptWrapper.TryGetEntity("Bouncer") as MySmallShipBot;
                if (bouncer != null)
                {
                    bouncer.LookTarget     = null;
                    m_barkeeper.LookTarget = null;
                    bouncer.SetWaypointPath("Client1");
                    bouncer.PatrolMode = MyPatrolMode.ONE_WAY;
                    bouncer.Patrol();
                }
            };
            m_objectives.Add(bouncerTalk);

            var returnBack = new MyObjective(
                (MyTextsWrapperEnum.RIME_CONVINCE_RETURN_TO_POSITION_Name),
                MyMissionID.RIME_CONVINCE_RETURN_TO_POSITION,
                (MyTextsWrapperEnum.RIME_CONVINCE_RETURN_TO_POSITION_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.RIME_CONVINCE_DUPLEX_BOUNCER },
                new MyMissionLocation(baseSector, (uint)EntityID.FlyToDummy))
            {
                SaveOnSuccess = true, HudName = MyTextsWrapperEnum.Nothing
            };

            returnBack.OnMissionSuccess += ReturnBackOnMissionSuccess;
            m_objectives.Add(returnBack);

            MyObjectiveDialog contactAppears = new MyObjectiveDialog(
                MyTextsWrapperEnum.RIME_CONVINCE_CONTACT_APPEARS_Name,
                MyMissionID.RIME_CONVINCE_CONTACT_APPEARS,
                MyTextsWrapperEnum.RIME_CONVINCE_CONTACT_APPEARS_Description,
                null,
                this,
                new MyMissionID[] { MyMissionID.RIME_CONVINCE_RETURN_TO_POSITION },
                dialogId: MyDialogueEnum.RIME_0800_CONTACT_APPEARS);

            contactAppears.OnMissionSuccess += delegate
            {
                MySmallShipBot mitchel = (MySmallShipBot)MyScriptWrapper.GetEntity("Mitchel");
                mitchel.SetWaypointPath("Follow1");
                mitchel.PatrolMode = MyPatrolMode.ONE_WAY;
                mitchel.Patrol();
                m_07followContact.TargetId = mitchel.EntityId.Value.NumericValue;
            };
            m_objectives.Add(contactAppears);

            m_07followContact = new MyObjectiveFollowBot(
                (MyTextsWrapperEnum.RIME_CONVINCE_FOLLOW_CONTACT_Name),
                MyMissionID.RIME_CONVINCE_FOLLOW_CONTACT,
                (MyTextsWrapperEnum.RIME_CONVINCE_FOLLOW_CONTACT_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.RIME_CONVINCE_CONTACT_APPEARS },
                null,
                (uint)EntityID.FactoryFound,
                MyDialogueEnum.RIME_0900_FOLLOW_INSTRUCTION)
            {
                FarDialog     = MyDialogueEnum.RIME_2100_HE_IS_GONE,
                ShortDialog   = MyDialogueEnum.RIME_2200_HE_SPOTTED_US,
                SaveOnSuccess = true,
                HudName       = MyTextsWrapperEnum.HudFollow
            };
            m_objectives.Add(m_07followContact);

            var factoryFoundDialogue = new MyObjectiveDialog(
                (MyTextsWrapperEnum.RIME_CONVINCE_FACTORY_FOUND_DIALOGUE_Name),
                MyMissionID.RIME_CONVINCE_FACTORY_FOUND_DIALOGUE,
                (MyTextsWrapperEnum.RIME_CONVINCE_FACTORY_FOUND_DIALOGUE_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.RIME_CONVINCE_FOLLOW_CONTACT },
                dialogId: MyDialogueEnum.RIME_1000_FACTORY_FOUND
                )
            {
                SaveOnSuccess = true
            };

            m_objectives.Add(factoryFoundDialogue);

            var destroyFactoryBots = new MyObjectiveDestroy(
                (MyTextsWrapperEnum.RIME_CONVINCE_DESTROY_FACTORY_BOTS_Name),
                MyMissionID.RIME_CONVINCE_DESTROY_FACTORY_BOTS,
                (MyTextsWrapperEnum.RIME_CONVINCE_DESTROY_FACTORY_BOTS_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.RIME_CONVINCE_FACTORY_FOUND_DIALOGUE },
                null,
                m_factorySpawns
                //startDialogID: MyDialogueEnum.RIME_1100_WE_GOT_YOUR_BACK
                )
            {
                SaveOnSuccess = true, HudName = MyTextsWrapperEnum.Nothing
            };

            destroyFactoryBots.OnMissionLoaded += DestroyFactoryBotsLoaded;
            m_objectives.Add(destroyFactoryBots);

            m_08CollectIllegalCargo = new MyMultipleUseObjective
                                          ((MyTextsWrapperEnum.RIME_CONVINCE_COLLECT_CARGO_Name),
                                          MyMissionID.RIME_CONVINCE_COLLECT_CARGO,
                                          (MyTextsWrapperEnum.RIME_CONVINCE_COLLECT_CARGO_Description),
                                          null,
                                          this,
                                          new MyMissionID[] { MyMissionID.RIME_CONVINCE_DESTROY_FACTORY_BOTS },
                                          MyTextsWrapperEnum.PressToCollectCargo,
                                          MyTextsWrapperEnum.IllegalCargo,
                                          MyTextsWrapperEnum.TakingInProgress,
                                          2000,
                                          m_boxes,
                                          MyUseObjectiveType.Taking
                                          )
            {
                RadiusOverride = 70f, SaveOnSuccess = true, StartDialogId = MyDialogueEnum.RIME_1100_GRAB_THE_ALCOHOL
            };
            m_objectives.Add(m_08CollectIllegalCargo);
            m_08CollectIllegalCargo.OnMissionLoaded    += M08CollectIllegalCargoOnOnMissionLoaded;
            m_08CollectIllegalCargo.OnObjectUsedSucces += M08CollectIllegalCargoOnOnObjectUsedSucces;
            m_08CollectIllegalCargo.OnMissionSuccess   += M08CollectIllegalCargoOnOnMissionSuccess;

            var cargoCollectedDialogue = new MyObjectiveDialog(
                (MyTextsWrapperEnum.RIME_CONVINCE_CARGO_COLLECTED_DIALOG_Name),
                MyMissionID.RIME_CONVINCE_CARGO_COLLECTED_DIALOG,
                (MyTextsWrapperEnum.RIME_CONVINCE_CARGO_COLLECTED_DIALOG_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.RIME_CONVINCE_COLLECT_CARGO },
                dialogId: MyDialogueEnum.RIME_1200_GET_TO_THE_VESSEL
                )
            {
                SaveOnSuccess = true
            };

            m_objectives.Add(cargoCollectedDialogue);

            var flyToVessel = new MyObjective(
                (MyTextsWrapperEnum.RIME_CONVINCE_FLY_TO_VESSEL_Name),
                MyMissionID.RIME_CONVINCE_FLY_TO_VESSEL,
                (MyTextsWrapperEnum.RIME_CONVINCE_FLY_TO_VESSEL_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.RIME_CONVINCE_CARGO_COLLECTED_DIALOG },
                new MyMissionLocation(baseSector, (uint)EntityID.FlyToVessel),
                startDialogId: MyDialogueEnum.RIME_1300_ON_THE_WAY_TO_VESSEL
                )
            {
                SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudRaynoldsVessel
            };

            m_objectives.Add(flyToVessel);
            flyToVessel.OnMissionLoaded += FlyToVesselLoaded;

            m_waitForTheMoment = new MyObjective(
                (MyTextsWrapperEnum.RIME_CONVINCE_WAIT_FOR_THE_MOMENT_Name),
                MyMissionID.RIME_CONVINCE_WAIT_FOR_THE_MOMENT,
                (MyTextsWrapperEnum.RIME_CONVINCE_WAIT_FOR_THE_MOMENT_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.RIME_CONVINCE_FLY_TO_VESSEL },
                null,
                startDialogId: MyDialogueEnum.RIME_1500_WAIT_FOR_THE_SIGNAL,
                successDialogId: MyDialogueEnum.RIME_1600_THIS_IS_OUR_CHANCE)
            {
                SaveOnSuccess = true
            };
            m_objectives.Add(m_waitForTheMoment);
            m_waitForTheMoment.OnMissionLoaded  += WaitForTheMomentLoaded;
            m_waitForTheMoment.OnMissionUpdate  += WaitForTheMomentUpdate;
            m_waitForTheMoment.OnMissionCleanUp += new MissionHandler(m_waitForTheMoment_OnMissionCleanUp);

            m_09plantcargo = new MyMultipleUseObjective
                                 ((MyTextsWrapperEnum.RIME_CONVINCE_PLANT_CARGO_Name),
                                 MyMissionID.RIME_CONVINCE_PLANT_CARGO,
                                 (MyTextsWrapperEnum.RIME_CONVINCE_PLANT_CARGO_Description),
                                 null,
                                 this,
                                 new MyMissionID[] { MyMissionID.RIME_CONVINCE_WAIT_FOR_THE_MOMENT },
                                 MyTextsWrapperEnum.HoldToPlantCargo,
                                 MyTextsWrapperEnum.IllegalCargo,
                                 MyTextsWrapperEnum.PlantingInProgress,
                                 2000,
                                 m_plantBoxes,
                                 MyUseObjectiveType.Taking,
                                 startDialogId: MyDialogueEnum.RIME_1650_PLACE
                                 )
            {
                RadiusOverride = 60f, SaveOnSuccess = true
            };
            m_objectives.Add(m_09plantcargo);
            m_09plantcargo.OnMissionLoaded    += M09PlantcargoOnOnMissionLoaded;
            m_09plantcargo.OnMissionSuccess   += M09PlantcargoOnOnMissionSuccess;
            m_09plantcargo.OnObjectUsedSucces += M09PlantcargoOnOnObjectUsedSucces;

            var getOutOfTheVessel = new MyObjective(
                (MyTextsWrapperEnum.RIME_CONVINCE_GET_OUT_OF_THE_VESSEL_Name),
                MyMissionID.RIME_CONVINCE_GET_OUT_OF_THE_VESSEL,
                (MyTextsWrapperEnum.RIME_CONVINCE_GET_OUT_OF_THE_VESSEL_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.RIME_CONVINCE_PLANT_CARGO },
                new MyMissionLocation(baseSector, (uint)EntityID.FlyToVessel)
                )
            {
                SaveOnSuccess = true, HudName = MyTextsWrapperEnum.Nothing
            };

            m_objectives.Add(getOutOfTheVessel);
            getOutOfTheVessel.OnMissionLoaded  += GetOutOfTheVesselLoaded;
            getOutOfTheVessel.OnMissionSuccess += GetOutOfTheVesselSuccess;

            /*
             * var cargoPlantedObjectiveDialogue = new MyObjectiveDialog(
             * new StringBuilder("Listen to the conversation"),
             * MyMissionID.RIME_CONVINCE_CARGO_PLANTED_OBJECTIVE_DIALOGUE,
             * new StringBuilder(""),
             * null,
             * this,
             * new MyMissionID[] { MyMissionID.RIME_CONVINCE_GET_OUT_OF_THE_VESSEL },
             * dialogId: MyDialogueEnum.RIME_1800_CARGO_PLANTED
             * ) { SaveOnSuccess = true };
             * m_objectives.Add(cargoPlantedObjectiveDialogue);
             */
            m_10MeetReef = new MyMeetObjective(
                (MyTextsWrapperEnum.RIME_CONVINCE_GO_BACK_TO_FRANCIS_Name),
                MyMissionID.RIME_CONVINCE_GO_BACK_TO_FRANCIS,
                (MyTextsWrapperEnum.RIME_CONVINCE_GO_BACK_TO_FRANCIS_Description),
                this,
                new MyMissionID[] { MyMissionID.RIME_CONVINCE_GET_OUT_OF_THE_VESSEL },
                null,
                (uint)EntityID.FrancisReef,
                100,
                0.25f,
                null,
                startDialogueId: MyDialogueEnum.RIME_1800_CARGO_PLANTED
                )
            {
                SaveOnSuccess = false, FollowMe = false
            };
            m_objectives.Add(m_10MeetReef);
            //m_01MeetReef.OnMissionLoaded += M01MeetReefOnOnMissionLoaded;

            m_11TalkToReef = new MyObjectiveDialog(
                MyMissionID.RIME_CONVINCE_TALK_TO_FRANCIS,
                null,
                this,
                new MyMissionID[] { MyMissionID.RIME_CONVINCE_GO_BACK_TO_FRANCIS },
                dialogId: MyDialogueEnum.RIME_2000_REEF_TALK
                )
            {
                SaveOnSuccess = false
            };
            m_objectives.Add(m_11TalkToReef);
            m_11TalkToReef.OnMissionLoaded  += M11TalkToReefOnOnMissionLoaded;
            m_11TalkToReef.OnMissionSuccess += M11TalkToReefOnOnMissionSuccess;
        }
Example #31
0
        public MyEACTransmitterMission()
        {
            ID          = MyMissionID.EAC_TRANSMITTER;
            DebugName   = new StringBuilder("21-EAC transmitter");
            Name        = MyTextsWrapperEnum.EAC_TRANSMITTER;
            Description = MyTextsWrapperEnum.EAC_TRANSMITTER_Description; // "Set all 3 satellites to your needs.\n"
            Flags       = MyMissionFlags.Story;

            MyMwcVector3Int baseSector = new MyMwcVector3Int(3818505, 0, -4273800);

            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation);



            RequiredMissions           = new MyMissionID[] { MyMissionID.EAC_PRISON };
            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.EAC_TRANSMITTER_MEETMS };
            RequiredActors             = new MyActorEnum[] { MyActorEnum.MARCUS, MyActorEnum.MADELYN, MyActorEnum.TARJA, MyActorEnum.VALENTIN };

            m_objectives = new List <MyObjective>();

            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeEnteringCargoWithRavens, 0, (uint)EntityID.SpawnpointAtInnerCargo));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeEnteringCargoWithRavens, 0, (uint)EntityID.SpawnpointAtOuterControlRoom1));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeEnteringControlRoomFromOutside, 0, (uint)EntityID.SpawnpointAtControlRoom1));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeEnteringControlRoomFromOutside, 0, (uint)EntityID.SpawnpointAtControlRoom2));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeEnteringSatelitteA, 0, (uint)EntityID.SpawnpointAtSatelitteA));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorWhenEscapingSatAThruDestroyedPanel, 0, (uint)EntityID.SpawnpointAtOuterSatelitteA));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorWhenEscapingSatAThruDestroyedPanel, 0, (uint)EntityID.SpawnpointAtControlRoom3));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorWhenEscapingSatAThruDestroyedPanel, 0, (uint)EntityID.SpawnpointAtControlRoom4));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeAgregat1, 0, (uint)EntityID.SpawnpointAtAgregat1));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeAgregat2, 0, (uint)EntityID.SpawnpointAtAgregat2));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeAgregat3, 0, (uint)EntityID.SpawnpointAtAgregat3));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeHackingSatelitteBandC, 0, (uint)EntityID.SpawnpointAtSatelitteB));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeHackingSatelitteBandC, 0, (uint)EntityID.SpawnpointAtSatelitteC));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeStartingTransmission, 0, (uint)EntityID.SpawnpointAtControlRoom5));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeStartingTransmission, 0, (uint)EntityID.SpawnpointAtControlRoom6));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeOpeningDoorToArm, 0, (uint)EntityID.SpawnpointAtArmEntrance));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeEnteringCargoThruArm, 0, (uint)EntityID.SpawnpointAtCargoInnerEntrance));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeFixingGenerator, 0, (uint)EntityID.SpawnpointAtGenerator));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeTurnBackOnSolars, 0, (uint)EntityID.SpawnpointAtSolarStarting));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeTurnBackOnSolars, 0, (uint)EntityID.SpawnpointAtControlRoom7));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeTurnBackOnSolars, 0, (uint)EntityID.SpawnpointAtControlRoom8));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeTurnBackOnSolars, 0, (uint)EntityID.SpawnpointAtOuterControlRoom2));

            var openCargoDoor = new MyUseObjective(
                (MyTextsWrapperEnum.EAC_TRANSMITTER_OPEN_CARGO_DOOR),
                MyMissionID.EAC_TRANSMITTER_OPEN_CARGO,
                (MyTextsWrapperEnum.EAC_TRANSMITTER_OPEN_CARGO_DOOR_Description),
                null,
                this,
                new MyMissionID[] { },
                new MyMissionLocation(baseSector, (uint)EntityID.DummyCargoBomb),
                MyTextsWrapperEnum.PressToPlaceBomb,
                MyTextsWrapperEnum.Blank,
                MyTextsWrapperEnum.PlacingBomb,
                1000,
                startDialogId: MyDialogueEnum.EAC_TRANSMITTER_0100
                )
            {
                SaveOnSuccess = true
            };

            m_objectives.Add(openCargoDoor);
            openCargoDoor.OnMissionLoaded  += new MissionHandler(openCargoDoor_OnMissionLoaded);
            openCargoDoor.OnMissionSuccess += new MissionHandler(openCargoDoor_OnMissionSuccess);


            var enterControlRoom = new MyObjective(
                (MyTextsWrapperEnum.EAC_TRANSMITTER_CENTRAL_ROOM),
                MyMissionID.EAC_TRANSMITTER_CENTRAL_ROOM,
                (MyTextsWrapperEnum.EAC_TRANSMITTER_CENTRAL_ROOM_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.EAC_TRANSMITTER_OPEN_CARGO },
                new MyMissionLocation(baseSector, (uint)EntityID.DummyControlRoom),
                startDialogId: MyDialogueEnum.EAC_TRANSMITTER_0200
                )
            {
                HudName       = MyTextsWrapperEnum.HudControlRoom,
                SaveOnSuccess = true
            };

            enterControlRoom.OnMissionLoaded  += new MissionHandler(enterControlRoom_OnMissionLoaded);
            enterControlRoom.OnMissionSuccess += new MissionHandler(enterControlRoom_OnMissionSuccess);
            m_objectives.Add(enterControlRoom);


            var unlockWayToSatelliteA = new MyObjectiveEnablePrefabs(
                (MyTextsWrapperEnum.EAC_TRANSMITTER_UNLOCK_WAY_TO_SATELLITES),
                MyMissionID.EAC_TRANSMITTER_UNLOCK_WAY_TO_SATELLITE_A,
                (MyTextsWrapperEnum.EAC_TRANSMITTER_UNLOCK_WAY_TO_SATELLITES_Descrption),
                null,
                this,
                new MyMissionID[] { MyMissionID.EAC_TRANSMITTER_CENTRAL_ROOM },
                null,
                new List <uint> {
                (int)EntityID.HubA
            },
                new List <uint> {
                (int)EntityID.DoorHubA
            }
                )
            {
                HudName       = MyTextsWrapperEnum.HudHub,
                SaveOnSuccess = true
            };

            m_objectives.Add(unlockWayToSatelliteA);

            var unlockWayToSatelliteB = new MyObjectiveEnablePrefabs(
                (MyTextsWrapperEnum.EAC_TRANSMITTER_UNLOCK_WAY_TO_SATELLITES),
                MyMissionID.EAC_TRANSMITTER_UNLOCK_WAY_TO_SATELLITE_B,
                (MyTextsWrapperEnum.EAC_TRANSMITTER_UNLOCK_WAY_TO_SATELLITES_Descrption),
                null,
                this,
                new MyMissionID[] { MyMissionID.EAC_TRANSMITTER_UNLOCK_WAY_TO_SATELLITE_A },
                null,
                new List <uint> {
                (int)EntityID.HubB
            },
                new List <uint> {
                (int)EntityID.DoorHubB1, (int)EntityID.DoorHubB2, (int)EntityID.DoorHubB3, (int)EntityID.DoorHubB4
            }
                )
            {
                HudName       = MyTextsWrapperEnum.HudHub,
                SaveOnSuccess = true
            };

            m_objectives.Add(unlockWayToSatelliteB);

            var unlockWayToSatelliteC = new MyObjectiveEnablePrefabs(
                (MyTextsWrapperEnum.EAC_TRANSMITTER_UNLOCK_WAY_TO_SATELLITES),
                MyMissionID.EAC_TRANSMITTER_UNLOCK_WAY_TO_SATELLITE_C,
                (MyTextsWrapperEnum.EAC_TRANSMITTER_UNLOCK_WAY_TO_SATELLITES_Descrption),
                null,
                this,
                new MyMissionID[] { MyMissionID.EAC_TRANSMITTER_UNLOCK_WAY_TO_SATELLITE_B },
                null,
                new List <uint> {
                (int)EntityID.HubC
            },
                new List <uint> {
                (int)EntityID.DoorHubC1, (int)EntityID.DoorHubC2, (int)EntityID.DoorHubC3, (int)EntityID.DoorHubC4
            }
                )
            {
                HudName       = MyTextsWrapperEnum.HudHub,
                SaveOnSuccess = true
            };

            m_objectives.Add(unlockWayToSatelliteC);


            var hackSatelliteA = new MyUseObjective(
                (MyTextsWrapperEnum.EAC_TRANSMITTER_HACK_SATELLITE_A),
                MyMissionID.EAC_TRANSMITTER_HACK_SATELLITE_A,
                (MyTextsWrapperEnum.EAC_TRANSMITTER_HACK_SATELLITE_A_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.EAC_TRANSMITTER_UNLOCK_WAY_TO_SATELLITE_C },
                new MyMissionLocation(baseSector, (uint)EntityID.DummySatelliteA),
                MyTextsWrapperEnum.PressToHack,
                MyTextsWrapperEnum.HackingProgress,
                MyTextsWrapperEnum.Hacking,
                2000,
                startDialogId: MyDialogueEnum.EAC_TRANSMITTER_0300
                );

            m_objectives.Add(hackSatelliteA);


            var autodestructEscape = new MyObjectiveDestroy(
                (MyTextsWrapperEnum.EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_ESCAPE),
                MyMissionID.EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_ESCAPE,
                (MyTextsWrapperEnum.EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_ESCAPE_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.EAC_TRANSMITTER_HACK_SATELLITE_A },
                new List <uint> {
                (uint)EntityID.PanelAutodestruct
            },
                startDialogID: MyDialogueEnum.EAC_TRANSMITTER_0400
                )
            {
                HudName = MyTextsWrapperEnum.HudPanel
            };

            autodestructEscape.OnMissionLoaded += new MissionHandler(autodestructEscape_OnMissionLoaded);
            m_objectives.Add(autodestructEscape);


            var autodestructHack = new MyUseObjective(
                (MyTextsWrapperEnum.EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_HACK),
                MyMissionID.EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_HACK,
                (MyTextsWrapperEnum.EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_HACK_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_ESCAPE },
                new MyMissionLocation(baseSector, (uint)EntityID.DummyAutodestructHack),
                MyTextsWrapperEnum.PressToHack,
                MyTextsWrapperEnum.Hacking,
                MyTextsWrapperEnum.HackingProgress,
                2000
                );

            m_objectives.Add(autodestructHack);

            //Escape by destroying panel upon your head
            var autodestructDestroy = new MyObjectiveDestroy(
                (MyTextsWrapperEnum.EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_DESTROY),
                MyMissionID.EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_DESTROY,
                (MyTextsWrapperEnum.EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_DESTROY_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_HACK },
                new List <uint> {
                (uint)EntityID.PrefabAutodestruct1, (uint)EntityID.PrefabAutodestruct2
            },
                startDialogID: MyDialogueEnum.EAC_TRANSMITTER_0500
                )
            {
                SaveOnSuccess = true
            };

            autodestructDestroy.OnMissionLoaded  += new MissionHandler(autodestructDestroy_OnMissionLoaded);
            autodestructDestroy.OnMissionSuccess += new MissionHandler(autodestructDestroy_OnMissionSuccess);
            m_objectives.Add(autodestructDestroy);

            var autodestructHelp = new MyObjectiveDestroy(
                (MyTextsWrapperEnum.EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_HELP),
                MyMissionID.EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_HELP,
                (MyTextsWrapperEnum.EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_HELP_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_DESTROY },
                null,
                new List <uint> {
                (uint)EntityID.SpawnAutodestruct
            },
                true,
                true,
                startDialogID: MyDialogueEnum.EAC_TRANSMITTER_0600,
                successDialogID: MyDialogueEnum.EAC_TRANSMITTER_0700
                )
            {
                SaveOnSuccess = true
            };

            autodestructHelp.OnMissionSuccess += new MissionHandler(autodestructHelp_OnMissionSuccess);
            m_objectives.Add(autodestructHelp);


            var hackSatelliteB = new MyUseObjective(
                (MyTextsWrapperEnum.EAC_TRANSMITTER_HACK_SATELLITE_B),
                MyMissionID.EAC_TRANSMITTER_HACK_SATELLITE_B,
                (MyTextsWrapperEnum.EAC_TRANSMITTER_HACK_SATELLITE_B_Descrption),
                null,
                this,
                new MyMissionID[] { MyMissionID.EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_HELP },
                new MyMissionLocation(baseSector, (uint)EntityID.DummySatelliteB),
                MyTextsWrapperEnum.PressToHack,
                MyTextsWrapperEnum.HackingProgress,
                MyTextsWrapperEnum.Hacking,
                2000
                )
            {
                SaveOnSuccess = true
            };

            m_objectives.Add(hackSatelliteB);


            var hackSatelliteC = new MyUseObjective(
                (MyTextsWrapperEnum.EAC_TRANSMITTER_HACK_SATELLITE_C),
                MyMissionID.EAC_TRANSMITTER_HACK_SATELLITE_C,
                (MyTextsWrapperEnum.EAC_TRANSMITTER_HACK_SATELLITE_C_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.EAC_TRANSMITTER_HACK_SATELLITE_B },
                new MyMissionLocation(baseSector, (uint)EntityID.DummySatelliteC),
                MyTextsWrapperEnum.PressToHack,
                MyTextsWrapperEnum.HackingProgress,
                MyTextsWrapperEnum.Hacking,
                2000,
                startDialogId: MyDialogueEnum.EAC_TRANSMITTER_0800
                )
            {
                SaveOnSuccess = true
            };

            m_objectives.Add(hackSatelliteC);

            var startTransmittion = new MyUseObjective(
                (MyTextsWrapperEnum.EAC_TRANSMITTER_START_TRANSMISSION),
                MyMissionID.EAC_TRANSMITTER_START_TRANSMISSION,
                (MyTextsWrapperEnum.EAC_TRANSMITTER_START_TRANSMISSION_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.EAC_TRANSMITTER_HACK_SATELLITE_C },
                new MyMissionLocation(baseSector, (uint)EntityID.DummySatelliteD),
                MyTextsWrapperEnum.PressToStartTransmission,
                MyTextsWrapperEnum.StartingTransmission,
                MyTextsWrapperEnum.Transmission,
                1000,
                startDialogId: MyDialogueEnum.EAC_TRANSMITTER_0900
                );

            m_objectives.Add(startTransmittion);

            var openSolarArm = new MyObjectiveEnablePrefabs(
                (MyTextsWrapperEnum.EAC_TRANSMITTER_OPEN_SOLAR_ARM),
                MyMissionID.EAC_TRANSMITTER_OPEN_SOLAR_ARM,
                (MyTextsWrapperEnum.EAC_TRANSMITTER_OPEN_SOLAR_ARM_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.EAC_TRANSMITTER_START_TRANSMISSION },
                null,
                new List <uint> {
                (int)EntityID.HubSolarArm
            },
                new List <uint> {
                (int)EntityID.DoorSolarArm
            },
                startDialogId: MyDialogueEnum.EAC_TRANSMITTER_1000
                )
            {
                HudName       = MyTextsWrapperEnum.HudHub,
                SaveOnSuccess = true
            };

            openSolarArm.OnMissionLoaded += new MissionHandler(openSolarArm_OnMissionLoaded);
            m_objectives.Add(openSolarArm);



            var findRepairKit = new MyUseObjective(
                (MyTextsWrapperEnum.EAC_TRANSMITTER_FIND_REPAIR),
                MyMissionID.EAC_TRANSMITTER_FIND_REPAIR,
                (MyTextsWrapperEnum.EAC_TRANSMITTER_FIND_REPAIR_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.EAC_TRANSMITTER_OPEN_SOLAR_ARM },
                new MyMissionLocation(baseSector, (uint)EntityID.CargoRepair),
                MyTextsWrapperEnum.PressToTakeCargo,
                MyTextsWrapperEnum.TakeAll,
                MyTextsWrapperEnum.TakingInProgress,
                2000,
                radiusOverride: 50
                )
            {
                HudName       = MyTextsWrapperEnum.HudGeneratorRepairKit,
                SaveOnSuccess = true
            };

            findRepairKit.OnMissionLoaded  += new MissionHandler(findRepairKit_OnMissionLoaded);
            findRepairKit.OnMissionSuccess += new MissionHandler(findRepairKit_OnMissionSuccess);
            m_objectives.Add(findRepairKit);


            var fixGenerator = new MyUseObjective(
                (MyTextsWrapperEnum.EAC_TRANSMITTER_FIX_GENERATOR),
                MyMissionID.EAC_TRANSMITTER_FIX_GENERATOR,
                (MyTextsWrapperEnum.EAC_TRANSMITTER_FIX_GENERATOR_Descrpition),
                null,
                this,
                new MyMissionID[] { MyMissionID.EAC_TRANSMITTER_FIND_REPAIR },
                new MyMissionLocation(baseSector, (uint)EntityID.DummyGeneratorFix),
                MyTextsWrapperEnum.PressToStartGenerator,
                MyTextsWrapperEnum.StartingProgress,
                MyTextsWrapperEnum.StartingProgress,
                2000,
                startDialogId: MyDialogueEnum.EAC_TRANSMITTER_1100
                )
            {
                SaveOnSuccess = true
            };

            fixGenerator.OnMissionSuccess += new MissionHandler(fixGenerator_OnMissionSuccess);
            m_objectives.Add(fixGenerator);

            var activateSolarpanels = new MyUseObjective(
                (MyTextsWrapperEnum.EAC_TRANSMITTER_ACTIVATE_SOLARPANELS),
                MyMissionID.EAC_TRANSMITTER_ACTIVATE_SOLARPANELS,
                (MyTextsWrapperEnum.EAC_TRANSMITTER_ACTIVATE_SOLARPANELS_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.EAC_TRANSMITTER_FIX_GENERATOR },
                new MyMissionLocation(baseSector, (uint)EntityID.DummySolarCircuit),
                MyTextsWrapperEnum.PressToRedirectEnergy,
                MyTextsWrapperEnum.RedirectEnergy,
                MyTextsWrapperEnum.RedirectionInProgress,
                2000,
                startDialogId: MyDialogueEnum.EAC_TRANSMITTER_1200
                );

            m_objectives.Add(activateSolarpanels);

            var restartTransmition = new MyUseObjective(
                (MyTextsWrapperEnum.EAC_TRANSMITTER_RESTART_TRANSMISSION),
                MyMissionID.EAC_TRANSMITTER_RESTART_TRANSMISSION,
                (MyTextsWrapperEnum.EAC_TRANSMITTER_RESTART_TRANSMISSION_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.EAC_TRANSMITTER_ACTIVATE_SOLARPANELS },
                new MyMissionLocation(baseSector, (uint)EntityID.DummySatelliteD),
                MyTextsWrapperEnum.PressToStartTransmission,
                MyTextsWrapperEnum.StartingTransmission,
                MyTextsWrapperEnum.Transmission,
                2000,
                startDialogId: MyDialogueEnum.EAC_TRANSMITTER_1300
                )
            {
                SaveOnSuccess = true
            };

            m_objectives.Add(restartTransmition);


            var meetms = new MyObjective(
                (MyTextsWrapperEnum.EAC_TRANSMITTER_MEETMS),
                MyMissionID.EAC_TRANSMITTER_MEETMS,
                (MyTextsWrapperEnum.EAC_TRANSMITTER_MEETMS_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.EAC_TRANSMITTER_RESTART_TRANSMISSION },
                new MyMissionLocation(baseSector, MyMissionLocation.MADELYN_HANGAR),
                startDialogId: MyDialogueEnum.EAC_TRANSMITTER_1400,
                radiusOverride: MyMissionLocation.MADELYN_HANGAR_RADIUS
                )
            {
                HudName = MyTextsWrapperEnum.HudMadelynsSapho
            };

            m_objectives.Add(meetms);
        }
        public MyChineseTransportMission()
        {
            #region Validate IDs

            m_validateIDlists = new List<List<uint>>();
            m_validateIDlists.Add(m_explosion1);
            m_validateIDlists.Add(m_explosion2);
            m_validateIDlists.Add(m_explosion3);
            m_validateIDlists.Add(m_explosion4);
            m_validateIDlists.Add(m_explosionFinal);
            m_validateIDlists.Add(m_transmitterPrefabs1);
            m_validateIDlists.Add(m_transmitterPrefabs2);
            m_validateIDlists.Add(m_spawnsStart);
            m_validateIDlists.Add(m_spawnsCenterAsteroid);
            m_validateIDlists.Add(m_spawnsTransmitter);
            m_validateIDlists.Add(m_spawnsCenterAsteroidOut);
            m_validateIDlists.Add(m_spawnsWave1);
            m_validateIDlists.Add(m_spawnsWave2);
            m_validateIDlists.Add(m_spawnsWave3);
            m_validateIDlists.Add(m_spawnsWave4);
            m_validateIDlists.Add(m_spawnsWave5);

            #endregion

            ID = MyMissionID.CHINESE_TRANSPORT; /* ID must be added to MyMissions.cs */
            Name = MyTextsWrapperEnum.CHINESE_TRANSPORT;
            Description = MyTextsWrapperEnum.CHINESE_TRANSPORT_Description; // "Destroy the transmitter and steal the chinese transporter\n"
            DebugName = new StringBuilder("08b-Chinese mines of Changde");
            Flags = MyMissionFlags.Story;

            MyMwcVector3Int baseSector = new MyMwcVector3Int(-4274372, 0, 4874227); // Story sector of the script

            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation); // Starting dummy point

            RequiredMissions = new MyMissionID[] { MyMissionID.JUNKYARD_CONVINCE };
            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.CHINESE_TRANSPORT_LAND_IN };
            RequiredActors = new MyActorEnum[] { MyActorEnum.MADELYN, MyActorEnum.MARCUS, MyActorEnum.TARJA, MyActorEnum.VALENTIN };

            m_objectives = new List<MyObjective>(); // Creating of list of submissions


            m_mission01_getFirstKey = new MyObjective( // One member of that list - its type defines the type of submission - MySubmission means fly to the dummypoint to success. Here it is var so you cannot call methods on it
                (MyTextsWrapperEnum.CHINESE_TRANSPORT_GET_SECURITY_KEY_Name), // Name of the submission
                MyMissionID.CHINESE_TRANSPORT_GET_SECURITY_KEY, // ID of the submission - must be added to MyMissions.cs
                (MyTextsWrapperEnum.CHINESE_TRANSPORT_GET_SECURITY_KEY_Description), // Description of the submission
                null,
                this,
                new MyMissionID[] { }, // ID of submissions required to make this submission available - it is clear so this submission is the starting submission
                null,
                startDialogId: MyDialogueEnum.CHINESE_TRANSPORT_0100_INTRODUCE
            )
                {
                    SaveOnSuccess = false,
                    HudName = MyTextsWrapperEnum.HudHub
                };
            m_mission01_getFirstKey.MissionEntityIDs.Add((uint)EntityID.HUBGetKey);
            m_objectives.Add(m_mission01_getFirstKey);

            m_mission02_reachTunnel_1 = new MyObjective(
                (MyTextsWrapperEnum.CHINESE_TRANSPORT_REACH_TUNNEL_1_Name),
                MyMissionID.CHINESE_TRANSPORT_REACH_TUNNEL_1,
                (MyTextsWrapperEnum.CHINESE_TRANSPORT_REACH_TUNNEL_1_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.CHINESE_TRANSPORT_GET_SECURITY_KEY },
                new MyMissionLocation(baseSector, (uint) EntityID.ReachTunnel1),
                startDialogId: MyDialogueEnum.CHINESE_TRANSPORT_0200_FIRST_DEVICE_HACKED
                ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudTunnel };
            m_objectives.Add(m_mission02_reachTunnel_1);

            m_mission03_reachTransmitter = new MyObjective(
                (MyTextsWrapperEnum.CHINESE_TRANSPORT_REACH_TRANSMITTER_Name),
                MyMissionID.CHINESE_TRANSPORT_REACH_TRANSMITTER,
                (MyTextsWrapperEnum.CHINESE_TRANSPORT_REACH_TRANSMITTER_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.CHINESE_TRANSPORT_REACH_TUNNEL_1 },
                 new MyMissionLocation(baseSector, (uint)EntityID.ReachTransmitter)
            ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudTransmitter };
            m_objectives.Add(m_mission03_reachTransmitter);

            m_mission04_killGuards = new MyObjectiveDestroy( // Var is used to call functions on that member
                 (MyTextsWrapperEnum.CHINESE_TRANSPORT_KILL_GUARDS_Name),
                 MyMissionID.CHINESE_TRANSPORT_KILL_GUARDS,
                 (MyTextsWrapperEnum.CHINESE_TRANSPORT_KILL_GUARDS_Description),
                 null,
                 this,
                 new MyMissionID[] { MyMissionID.CHINESE_TRANSPORT_REACH_TRANSMITTER },
                 null,
                 m_spawnsTransmitter,
                 true,
                 startDialogID: MyDialogueEnum.CHINESE_TRANSPORT_0500_MARCUS_IS_HERE
             ) { SaveOnSuccess = true };
            m_objectives.Add(m_mission04_killGuards);

            m_mission05HackTransmitters = new MyMultipleUseObjective(
                (MyTextsWrapperEnum.CHINESE_TRANSPORT_HACK_TRANSMITTER_Name),
                MyMissionID.CHINESE_TRANSPORT_HACK_TRANSMITTER,
                (MyTextsWrapperEnum.CHINESE_TRANSPORT_HACK_TRANSMITTER_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.CHINESE_TRANSPORT_KILL_GUARDS },
                MyTextsWrapperEnum.HoldToUseSecurityKey,
                MyTextsWrapperEnum.Using,
                MyTextsWrapperEnum.DeactivatingInProgress,
                2000,
                new List<uint> { (uint) EntityID.HUBHackTrans1, (uint) EntityID.HUBHackTrans2 }
                )
                {
                    StartDialogId = MyDialogueEnum.CHINESE_TRANSPORT_0600_DESTROY_THE_TRANSMITTER, 
                    SaveOnSuccess = false,
                    RadiusOverride = 30,
                    MakeEntityIndestructible = false,
                    FailIfEntityDestroyed = true
                };
            m_objectives.Add(m_mission05HackTransmitters);

            m_mission06_placeBomb = new MyUseObjective(
                (MyTextsWrapperEnum.CHINESE_TRANSPORT_PLACE_BOMB_Name),
                MyMissionID.CHINESE_TRANSPORT_PLACE_BOMB,
                (MyTextsWrapperEnum.CHINESE_TRANSPORT_PLACE_BOMB_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.CHINESE_TRANSPORT_HACK_TRANSMITTER },
                new MyMissionLocation(baseSector, (uint)EntityID.PlaceBomb),
                MyTextsWrapperEnum.PressToPlaceBomb,
                MyTextsWrapperEnum.Bomb,
                MyTextsWrapperEnum.PlacementInProgress,
                5000,
                MyUseObjectiveType.Activating, 
                startDialogId: MyDialogueEnum.CHINESE_TRANSPORT_0670_disabling_the_terminals
            ) { SaveOnSuccess = false };
            m_mission06_placeBomb.MissionEntityIDs.Add((uint) EntityID.Bomb);
            m_objectives.Add(m_mission06_placeBomb);

            m_mission07_runExplosion = new MyObjective(
                (MyTextsWrapperEnum.CHINESE_TRANSPORT_RUN_EXPLOSION_Name),
                MyMissionID.CHINESE_TRANSPORT_RUN_EXPLOSION,
                (MyTextsWrapperEnum.CHINESE_TRANSPORT_RUN_EXPLOSION_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.CHINESE_TRANSPORT_PLACE_BOMB },
                new MyMissionLocation(baseSector, (uint)EntityID.RunExplosion),
                startDialogId: MyDialogueEnum.CHINESE_TRANSPORT_0700_RUN
            ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudSafeArea };
            m_objectives.Add(m_mission07_runExplosion);

            m_mission08_lookOnExplosion = new MyObjective(
              (MyTextsWrapperEnum.CHINESE_TRANSPORT_LOOK_ON_EXPLOSION_Name),
              MyMissionID.CHINESE_TRANSPORT_LOOK_ON_EXPLOSION,
              (MyTextsWrapperEnum.CHINESE_TRANSPORT_LOOK_ON_EXPLOSION_Description),
              null,
              this,
              new MyMissionID[] { MyMissionID.CHINESE_TRANSPORT_RUN_EXPLOSION },
              new MyMissionLocation(baseSector, (uint)EntityID.DestructionTransmitter)
          ) { SaveOnSuccess = true };
            m_objectives.Add(m_mission08_lookOnExplosion);

            m_mission09_reachTunnel2 = new MyObjective(
                (MyTextsWrapperEnum.CHINESE_TRANSPORT_REACH_TUNNEL_2_Name),
                MyMissionID.CHINESE_TRANSPORT_REACH_TUNNEL_2,
                (MyTextsWrapperEnum.CHINESE_TRANSPORT_REACH_TUNNEL_2_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.CHINESE_TRANSPORT_LOOK_ON_EXPLOSION },
                new MyMissionLocation(baseSector, (uint)EntityID.ReachTunnel2),
                startDialogId: MyDialogueEnum.CHINESE_TRANSPORT_0800_GO_TO_SECOND_BASE
            ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudTunnel };
            m_objectives.Add(m_mission09_reachTunnel2);

            m_mission10_pastTunnel2 = new MyObjective(
                (MyTextsWrapperEnum.CHINESE_TRANSPORT_PAST_TUNNEL_2_Name),
                MyMissionID.CHINESE_TRANSPORT_PAST_TUNNEL_2,
                (MyTextsWrapperEnum.CHINESE_TRANSPORT_PAST_TUNNEL_2_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.CHINESE_TRANSPORT_REACH_TUNNEL_2 },
                new MyMissionLocation(baseSector, (uint)EntityID.PastTunnel2),
                startDialogId: MyDialogueEnum.CHINESE_TRANSPORT_0850_INSIDE_TUNNEL,
                successDialogId: MyDialogueEnum.CHINESE_TRANSPORT_0900_SURRENDER
            ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudEnd };
            m_objectives.Add(m_mission10_pastTunnel2);

            m_mission11_reachHangarHack = new MyObjective(
                (MyTextsWrapperEnum.CHINESE_TRANSPORT_REACH_HANGAR_HACK_Name),
                MyMissionID.CHINESE_TRANSPORT_REACH_HANGAR_HACK,
                (MyTextsWrapperEnum.CHINESE_TRANSPORT_REACH_HANGAR_HACK_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.CHINESE_TRANSPORT_PAST_TUNNEL_2 },
                new MyMissionLocation(baseSector, (uint)EntityID.ReachHacking),
                successDialogId: MyDialogueEnum.CHINESE_TRANSPORT_1000_DOOR_BLOCKED
            ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudServiceRoom };
            m_mission11_reachHangarHack.OnMissionLoaded += Mission11ReachHangarHackOnOnMissionLoaded;
            m_objectives.Add(m_mission11_reachHangarHack);

            m_mission12_hackHangarServicePC = new MyObjective(
                (MyTextsWrapperEnum.CHINESE_TRANSPORT_HACK_HANGAR_SERVICE_PC_Name),
                MyMissionID.CHINESE_TRANSPORT_HACK_HANGAR_SERVICE_PC,
                (MyTextsWrapperEnum.CHINESE_TRANSPORT_HACK_HANGAR_SERVICE_PC_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.CHINESE_TRANSPORT_REACH_HANGAR_HACK },
                null
                //startDialogId: MyDialogueEnum.CHINESE_TRANSPORT_1400_DOORS_UNLOCKED
            ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudHub };
            m_mission12_hackHangarServicePC.OnMissionLoaded += new MissionHandler(m_mission12_hackHangarServicePC_OnMissionLoaded);
            m_objectives.Add(m_mission12_hackHangarServicePC);
            m_mission12_hackHangarServicePC.MissionEntityIDs.Add((uint)EntityID.HUBHackHangar);

            m_mission13_defendMarcus = new MyDestroyWavesObjective(
               (MyTextsWrapperEnum.CHINESE_TRANSPORT_DEFEND_MARCUS_Name),
               MyMissionID.CHINESE_TRANSPORT_DEFEND_MARCUS,
               (MyTextsWrapperEnum.CHINESE_TRANSPORT_DEFEND_MARCUS_Description),
               null,
               this,
               new MyMissionID[] { MyMissionID.CHINESE_TRANSPORT_HACK_HANGAR_SERVICE_PC },
               null,
               null,
               null,
               null,
               4
               )
                {
                    SaveOnSuccess = false,
                    StartDialogId = MyDialogueEnum.CHINESE_TRANSPORT_1100_HELP_MARCUS
                };
            m_mission13_defendMarcus.AddWave(m_spawnsWave1);
            m_mission13_defendMarcus.AddWave(m_spawnsWave2);
            m_mission13_defendMarcus.AddWave(m_spawnsWave3);
            m_mission13_defendMarcus.AddWave(m_spawnsWave4);
            m_mission13_defendMarcus.AddWave(m_spawnsWave5);
            m_mission13_defendMarcus.Components.Add(new MySpawnpointLimiter(m_spawns, 10));
            m_objectives.Add(m_mission13_defendMarcus);

            m_mission14_killBoss = new MyObjectiveDestroy( // Var is used to call functions on that member
                 (MyTextsWrapperEnum.CHINESE_TRANSPORT_KILL_BOSS_Name),
                 MyMissionID.CHINESE_TRANSPORT_KILL_BOSS,
                 (MyTextsWrapperEnum.CHINESE_TRANSPORT_KILL_BOSS_Description),
                 null,
                 this,
                 new MyMissionID[] { MyMissionID.CHINESE_TRANSPORT_DEFEND_MARCUS },
                 null,
                 new List<uint> { (uint)EntityID.SpawnBossCompanion1, (uint)EntityID.SpawnBossCompanion2, (uint)EntityID.SpawnBoss },
                 true,
                 startDialogID: MyDialogueEnum.CHINESE_TRANSPORT_1200_GENERAL_ARRIVAL
             ) { SaveOnSuccess = true };
            m_objectives.Add(m_mission14_killBoss);

            m_mission15_landIn = new MyObjective(
                (MyTextsWrapperEnum.CHINESE_TRANSPORT_LAND_IN_Name),
                MyMissionID.CHINESE_TRANSPORT_LAND_IN,
                (MyTextsWrapperEnum.CHINESE_TRANSPORT_LAND_IN_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.CHINESE_TRANSPORT_KILL_BOSS },
                new MyMissionLocation(baseSector, (uint)EntityID.Land),
                startDialogId: MyDialogueEnum.CHINESE_TRANSPORT_1300_LAND_IN
            ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudShip };
            m_objectives.Add(m_mission15_landIn);

            m_mission01_getFirstKey.OnMissionLoaded += M01GetFirstKeyLoaded;
            m_mission02_reachTunnel_1.OnMissionLoaded += M02ReachTunnel1Loaded;
            m_mission03_reachTransmitter.OnMissionLoaded += M03ReachTransmitterLoaded;
            m_mission04_killGuards.OnMissionLoaded += M04KillGuardsLoaded;
            m_mission05HackTransmitters.OnMissionLoaded += M05HackTransmitterLoaded;
            m_mission06_placeBomb.OnMissionLoaded += M06PlaceBombLoaded;
            m_mission07_runExplosion.OnMissionLoaded += M07RunExplosionLoaded;
            m_mission08_lookOnExplosion.OnMissionLoaded += M08LookOnExplosionLoaded;
            m_mission09_reachTunnel2.OnMissionLoaded += M09ReachTunnel2Loaded;
            m_mission10_pastTunnel2.OnMissionLoaded += M10PastTunnel2Loaded;
            m_mission11_reachHangarHack.OnMissionLoaded += M11ReachHangarHackLoaded;
            m_mission12_hackHangarServicePC.OnMissionLoaded += M12HackHangarServicePCLoaded;
            m_mission13_defendMarcus.OnMissionLoaded += M13DefendMarcusLoaded;
            m_mission13_defendMarcus.OnMissionCleanUp += Mission13DefendMarcusOnOnMissionCleanUp;
            m_mission14_killBoss.OnMissionLoaded += M14KillBossLoaded;
            m_mission14_killBoss.OnMissionCleanUp += M14KillBossUnloaded;
            m_mission15_landIn.OnMissionLoaded += M15LandInLoaded;

            m_mission06_placeBomb.OnMissionSuccess += M06PlaceBombSuccess;
            m_mission05HackTransmitters.OnObjectUsedSucces += M05TransmittersSuccess;
        }
Example #33
0
        public MyJunkyardConvinceMission()
        {
            ID              = MyMissionID.JUNKYARD_CONVINCE;                    /* ID must be added to MyMissions.cs */
            Name            = MyTextsWrapperEnum.JUNKYARD_CONVINCE;
            Description     = MyTextsWrapperEnum.JUNKYARD_CONVINCE_Description; //"Convince the Smuggler to join you in your mission \n"
            DebugName       = new StringBuilder("08a-Junkyard");                // Name of mission
            Flags           = MyMissionFlags.Story;
            AchievementName = MySteamAchievementNames.Mission08_JunkyardDuncan;

            MyMwcVector3Int baseSector = new MyMwcVector3Int(2567538, 0, -172727);      // Story sector of the script - i.e. (-2465,0,6541)

            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation); // Starting dummy point - must by typecasted to uint and referenced from EntityID enum

            RequiredMissions           = new MyMissionID[] { MyMissionID.LAST_HOPE };   // IDs of missions required to make this mission available
            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.JUNKYARD_CONVINCE_RETURN_TO_MS };
            RequiredActors             = new MyActorEnum[] { MyActorEnum.MARCUS, MyActorEnum.MADELYN, };

            #region Objectives
            m_objectives = new List <MyObjective>(); // Creating of list of submissions

            // ----- objectives -----

            m_objective01FindInformator = new MyMeetObjective(
                // One member of that list - its type defines the type of submission - MySubmission means fly to the dummypoint to success. Here it is var so you cannot call methods on it
                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_FIND_INFORMATOR_Name),
                // Name of the submission
                MyMissionID.JUNKYARD_CONVINCE_FIND_INFORMATOR,
                // ID of the submission - must be added to MyMissions.cs
                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_FIND_INFORMATOR_Description),
                // Description of the submission
                this,
                new MyMissionID[] { },
                // ID of submissions required to make this submission available - it is clear so this submission is the starting submission
                null,
                "RavenGirl",
                250,
                1.00f,
                startDialogueId: MyDialogueEnum.JUNKYARD_CONVINCE_0100_INTRODUCE
                )
            {
                // False means do not save game in that checkpoint
                SaveOnSuccess = false,
                FollowMe      = false
            };
            m_objective01FindInformator.OnMissionLoaded += O01FindInformatorLoaded;
            m_objectives.Add(m_objective01FindInformator);


            m_objective01BFindInformator = new MyObjectiveDialog(
                MyTextsWrapperEnum.JUNKYARD_CONVINCE_D_FIND_INFORMATOR_Name,
                MyMissionID.JUNKYARD_CONVINCE_D_FIND_INFORMATOR,
                MyTextsWrapperEnum.JUNKYARD_CONVINCE_D_FIND_INFORMATOR_Description,
                null,
                this,
                new MyMissionID[] { MyMissionID.JUNKYARD_CONVINCE_FIND_INFORMATOR },
                dialogId: MyDialogueEnum.JUNKYARD_CONVINCE_0200_INFORMATOR
                )
            {
                SaveOnSuccess = false,
            };
            m_objective01BFindInformator.OnMissionLoaded  += O01BFindInformatorLoaded;
            m_objective01BFindInformator.OnMissionSuccess += O01BFindInformatorSuccess;
            m_objectives.Add(m_objective01BFindInformator);

            m_objective02FindSmuggler = new MyObjective(
                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_FIND_SMUGGLER_Name),
                MyMissionID.JUNKYARD_CONVINCE_FIND_SMUGGLER,
                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_FIND_SMUGGLER_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.JUNKYARD_CONVINCE_D_FIND_INFORMATOR },
                new MyMissionLocation(baseSector, (uint)EntityID.FindSmuggler)  // ID of dummy point of checkpoint
                )
            {
                SaveOnSuccess   = false,
                SuccessDialogId = MyDialogueEnum.JUNKYARD_CONVINCE_0300_RUN,
                HudName         = MyTextsWrapperEnum.HudManjeet
            };
            m_objective02FindSmuggler.OnMissionLoaded  += O02FindSmugglerLoaded;
            m_objective02FindSmuggler.OnMissionSuccess += O2FindSmugglerSuccess;
            m_objectives.Add(m_objective02FindSmuggler);

            m_objective04FollowSmuggler = new MyMeetObjective(
                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_FOLLOW_SMUGGLER_Name),
                MyMissionID.JUNKYARD_CONVINCE_FOLLOW_SMUGGLER,
                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_FOLLOW_SMUGGLER_Description),
                this,
                new MyMissionID[] { MyMissionID.JUNKYARD_CONVINCE_FIND_SMUGGLER },
                null,
                (uint)EntityID.Smuggler,
                300,
                1.00f
                )
            {
                SaveOnSuccess = false,
                FollowMe      = false
            };
            m_objective04FollowSmuggler.OnMissionLoaded  += O04FollowSmugglerLoaded;
            m_objective04FollowSmuggler.OnMissionSuccess += O04FollowSmugglerSuccess;
            m_objectives.Add(m_objective04FollowSmuggler);

            m_objective04DFollowSmuggler = new MyObjectiveDialog(
                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_D_FOLLOW_SMUGGLER_Name),
                MyMissionID.JUNKYARD_CONVINCE_D_FOLLOW_SMUGGLER,
                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_D_FOLLOW_SMUGGLER_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.JUNKYARD_CONVINCE_FOLLOW_SMUGGLER },
                dialogId: MyDialogueEnum.JUNKYARD_CONVINCE_0500_CATCHED
                )
            {
                SaveOnSuccess = false,
            };
            m_objectives.Add(m_objective04DFollowSmuggler);
            m_objective04DFollowSmuggler.OnMissionLoaded  += O04DFollowSmugglerLoaded;
            m_objective04DFollowSmuggler.OnMissionSuccess += O04DFollowSmugglerSuccess;

            m_objective05GetCloserToEnemy = new MyObjective(
                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_FLY_TO_ENEMY_Name),
                MyMissionID.JUNKYARD_CONVINCE_FLY_TO_ENEMY,
                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_FLY_TO_ENEMY_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.JUNKYARD_CONVINCE_D_FOLLOW_SMUGGLER },
                new MyMissionLocation(baseSector, (uint)EntityID.FlyToEnemy),
                radiusOverride: 500f
                )
            {
                SaveOnSuccess = true, HudName = MyTextsWrapperEnum.Nothing
            };
            m_objective05GetCloserToEnemy.OnMissionLoaded += O05GetCloserToEnemyLoaded;
            m_objectives.Add(m_objective05GetCloserToEnemy);

            m_objective05MetZappasFirstGangman = new MyObjectiveDialog(
                MyMissionID.JUNKYARD_CONVINCE_MEET_GANGMAN,
                null,
                this,
                new MyMissionID[] { MyMissionID.JUNKYARD_CONVINCE_FLY_TO_ENEMY },
                dialogId: MyDialogueEnum.JUNKYARD_CONVINCE_0650_MET_ZAPPA_GUARD
                );
            m_objectives.Add(m_objective05MetZappasFirstGangman);
            m_objective05MetZappasFirstGangman.OnMissionLoaded  += O05MetZappasFirstGangmanLoaded;
            m_objective05MetZappasFirstGangman.OnMissionSuccess += O05MetZappasFirstGangmanSuccess;

            m_objective06KillWaves = new MyDestroyWavesObjective(
                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_KILL_WAVES_Name),
                MyMissionID.JUNKYARD_CONVINCE_KILL_WAVES,
                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_KILL_WAVES_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.JUNKYARD_CONVINCE_MEET_GANGMAN },
                null,
                null,
                null,
                null,
                4
                )
            {
                SaveOnSuccess = false
            };
            m_objective06KillWaves.AddWave(new List <uint> {
                (uint)EntityID.SP1_1, (uint)EntityID.SP1_2, (uint)EntityID.SP1_3, (uint)EntityID.SP1_4
            });
            m_objective06KillWaves.AddWave(new List <uint> {
                (uint)EntityID.SP2_1, (uint)EntityID.SP2_2
            });
            m_objective06KillWaves.AddWave(new List <uint> {
                (uint)EntityID.SP3_1, (uint)EntityID.SP3_2, (uint)EntityID.SP3_3
            });
            m_objective06KillWaves.OnMissionLoaded  += O06KillWavesLoaded;
            m_objective06KillWaves.OnMissionSuccess += O06KillWavesSuccess;
            m_objectives.Add(m_objective06KillWaves);

            m_objective07SpeakWithMomo = new MyMeetObjective(
                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_SPEAK_WITH_MOMO_Name),
                MyMissionID.JUNKYARD_CONVINCE_SPEAK_WITH_MOMO,
                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_SPEAK_WITH_MOMO_Description),
                this,
                new MyMissionID[] { MyMissionID.JUNKYARD_CONVINCE_KILL_WAVES },
                null,
                (uint?)null,
                500,
                1.00f
                )
            {
                SaveOnSuccess = false,
                FollowMe      = false
            };
            m_objectives.Add(m_objective07SpeakWithMomo);

            m_objective07DSpeakWithMomo = new MyObjectiveDialog(
                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_D_SPEAK_WITH_MOMO_Name),
                MyMissionID.JUNKYARD_CONVINCE_D_SPEAK_WITH_MOMO,
                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_D_SPEAK_WITH_MOMO_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.JUNKYARD_CONVINCE_SPEAK_WITH_MOMO },
                dialogId: MyDialogueEnum.JUNKYARD_CONVINCE_0900_THE_MOMO
                )
            {
                SaveOnSuccess = false
            };
            m_objectives.Add(m_objective07DSpeakWithMomo);
            m_objective07DSpeakWithMomo.OnMissionLoaded  += O07DSpeakWithMomoLoaded;
            m_objective07DSpeakWithMomo.OnMissionSuccess += O07DSpeakWithMomoSuccess;

            m_objective08FightMomo = new MyObjectiveDestroy(
                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_FIGHT_MOMO_Name),
                MyMissionID.JUNKYARD_CONVINCE_FIGHT_MOMO,
                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_FIGHT_MOMO_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.JUNKYARD_CONVINCE_D_SPEAK_WITH_MOMO },
                null,
                new List <uint> {
                (uint)EntityID.SP4_1, (uint)EntityID.SP4_2, (uint)EntityID.MomoZappaSP
            },
                true
                )
            {
                SaveOnSuccess = false, HudName = MyTextsWrapperEnum.Nothing
            };
            m_objective08FightMomo.OnMissionLoaded += O08FightMomoLoaded;
            m_objectives.Add(m_objective08FightMomo);

            m_objective09ReturnToSmuggler = new MyMeetObjective(
                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_RETURN_TO_SMUGGLER_Name),
                MyMissionID.JUNKYARD_CONVINCE_RETURN_TO_SMUGGLER,
                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_RETURN_TO_SMUGGLER_Description),
                this,
                new MyMissionID[] { MyMissionID.JUNKYARD_CONVINCE_FIGHT_MOMO },
                null,
                (uint)EntityID.Smuggler,
                300,
                1.00f
                //startDialogueId: MyDialogueEnum.JUNKYARD_CONVINCE_1000_LAST_OF_THEM
                )
            {
                SaveOnSuccess = true, FollowMe = false
            };
            m_objective09ReturnToSmuggler.OnMissionLoaded += O09ReturnToSmugglerLoaded;
            m_objectives.Add(m_objective09ReturnToSmuggler);

            m_objective09DReturnToSmuggler = new MyObjectiveDialog(
                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_D_RETURN_TO_SMUGGLER_Name),
                MyMissionID.JUNKYARD_CONVINCE_D_RETURN_TO_SMUGGLER,
                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_D_RETURN_TO_SMUGGLER_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.JUNKYARD_CONVINCE_RETURN_TO_SMUGGLER },
                dialogId: MyDialogueEnum.JUNKYARD_CONVINCE_1100_FIGHT_ENDS
                )
            {
                SaveOnSuccess = false
            };
            m_objectives.Add(m_objective09DReturnToSmuggler);
            m_objective09DReturnToSmuggler.OnMissionLoaded  += O09DReturnToSmugglerLoaded;
            m_objective09DReturnToSmuggler.OnMissionSuccess += O09DReturnToSmugglerSuccess;

            m_objective10FindBombDealer = new MyMeetObjective(
                // One member of that list - its type defines the type of submission - MySubmission means fly to the dummypoint to success. Here it is var so you cannot call methods on it
                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_GO_TO_BOMB_DEALER_Name),
                // Name of the submission
                MyMissionID.JUNKYARD_CONVINCE_GO_TO_BOMB_DEALER,
                // ID of the submission - must be added to MyMissions.cs
                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_GO_TO_BOMB_DEALER_Description),
                // Description of the submission
                this,
                new MyMissionID[] { MyMissionID.JUNKYARD_CONVINCE_D_RETURN_TO_SMUGGLER },
                // ID of submissions required to make this submission available - it is clear so this submission is the starting submission
                null,
                (uint)EntityID.BombDealer,
                300,
                1.00f
                )
            {
                SaveOnSuccess  = false,
                RequiredActors = new MyActorEnum[] { MyActorEnum.TARJA, MyActorEnum.VALENTIN },
                FollowMe       = false
            };
            m_objective10FindBombDealer.OnMissionLoaded += O10FindBombDealerLoaded;
            m_objectives.Add(m_objective10FindBombDealer);

            m_objective10DFindBombDealer = new MyObjectiveDialog(
                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_D_GO_TO_BOMB_DEALER_Name),
                MyMissionID.JUNKYARD_CONVINCE_D_GO_TO_BOMB_DEALER,
                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_D_GO_TO_BOMB_DEALER_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.JUNKYARD_CONVINCE_GO_TO_BOMB_DEALER },
                dialogId: MyDialogueEnum.JUNKYARD_CONVINCE_1300_BOMB_DEALER
                )
            {
                SaveOnSuccess = false
            };
            m_objectives.Add(m_objective10DFindBombDealer);
            m_objective10DFindBombDealer.OnMissionLoaded  += O10DFindBombDealerLoaded;
            m_objective10DFindBombDealer.OnMissionSuccess += O10DFindBombDealerSuccess;

            m_objective11GetToMarcus = new MyMeetObjective(
                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_GO_TO_MARCUS_Name),
                MyMissionID.JUNKYARD_CONVINCE_GO_TO_MARCUS,
                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_GO_TO_MARCUS_Description),
                this,
                new MyMissionID[] { MyMissionID.JUNKYARD_CONVINCE_D_GO_TO_BOMB_DEALER },
                null,
                "Marcus",
                300,
                1.00f
                )
            {
                SaveOnSuccess = true,
                FollowMe      = false,
            };
            m_objective11GetToMarcus.OnMissionLoaded  += O11GetToMarcusLoaded;
            m_objective11GetToMarcus.OnMissionSuccess += O11GetToMarcusSuccess;
            m_objectives.Add(m_objective11GetToMarcus);

            var objective11DGetToMarcus = new MyObjectiveDialog(
                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_D_GO_TO_MARCUS_Name),
                MyMissionID.JUNKYARD_CONVINCE_D_GO_TO_MARCUS,
                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_D_GO_TO_MARCUS_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.JUNKYARD_CONVINCE_GO_TO_MARCUS },
                dialogId: MyDialogueEnum.JUNKYARD_CONVINCE_1400_ARRIVED_AT_MARCUS
                )
            {
                SaveOnSuccess = false
            };
            m_objectives.Add(objective11DGetToMarcus);

            m_objective12BrFight = new MyDestroyWavesObjective(
                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_BR_FIGHT_Name),
                MyMissionID.JUNKYARD_CONVINCE_BR_FIGHT,
                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_BR_FIGHT_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.JUNKYARD_CONVINCE_D_GO_TO_MARCUS },
                new List <uint>
            {
                (uint)EntityID.BR_SP_1,
                (uint)EntityID.BR_SP_2,
                (uint)EntityID.BR_SP_3,
                (uint)EntityID.BR_SP_4,
                (uint)EntityID.BR_SP_Boss
            }
                )
            {
                SaveOnSuccess   = false,
                StartDialogId   = MyDialogueEnum.JUNKYARD_CONVINCE_1500_GANGSTER_FIGHT_STARTED,
                SuccessDialogId = MyDialogueEnum.JUNKYARD_CONVINCE_1600_GO_TO_MS
            };
            m_objective12BrFight.OnMissionLoaded  += O12BRFightLoaded;
            m_objective12BrFight.OnMissionSuccess += O12BRFightSuccess;
            m_objective12BrFight.AddWave(m_killWavesSecond1);
            m_objective12BrFight.AddWave(m_killWavesSecond2);
            m_objective12BrFight.AddWave(m_killWavesSecond3);
            m_objective12BrFight.AddWave(m_killWavesSecond4);
            m_objectives.Add(m_objective12BrFight);

            m_objective13FlyToMS = new MyObjective(
                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_RETURN_TO_MS_Name),
                MyMissionID.JUNKYARD_CONVINCE_RETURN_TO_MS,
                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_RETURN_TO_MS_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.JUNKYARD_CONVINCE_BR_FIGHT },
                new MyMissionLocation(baseSector, MyMissionLocation.MADELYN_HANGAR),
                radiusOverride: 300f
                )
            {
                SaveOnSuccess   = true,
                SuccessDialogId = MyDialogueEnum.JUNKYARD_CONVINCE_1700_FINALE,
                HudName         = MyTextsWrapperEnum.HudMadelynsSapho
            };
            m_objectives.Add(m_objective13FlyToMS);
            #endregion

            m_spawns.AddRange(m_killWavesSecond1);
            m_spawns.AddRange(m_killWavesSecond2);
            m_spawns.AddRange(m_killWavesSecond3);
            m_spawns.AddRange(m_killWavesSecond4);
        }
        public MyFortValiantMission() : base()
        {
            ID                         = MyMissionID.FORT_VALIANT; /* ID must be added to MyMissions.cs */
            Name                       = MyTextsWrapperEnum.FORT_VALIANT;
            Description                = MyTextsWrapperEnum.FORT_VALIANT_Description;
            DebugName                  = new StringBuilder("09a-Fort Valiant A"); // Name of mission
            RequiredMissions           = new MyMissionID[] { MyMissionID.JUNKYARD_RETURN };
            RequiredActors             = new MyActorEnum[] { MyActorEnum.MADELYN, MyActorEnum.MARCUS, MyActorEnum.TARJA, MyActorEnum.VALENTIN };
            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.FORT_VALIANT_VISIT_VENDOR };

            #region Objectives
            m_objectives = new List <MyObjective>(); // Creating of list of submissions

            var flyOne = new MyObjective(
                (MyTextsWrapperEnum.FORT_VALIANT_FLY_ONE_Name),
                MyMissionID.FORT_VALIANT_FLY_ONE,
                (MyTextsWrapperEnum.FORT_VALIANT_FLY_ONE_Description),
                null,
                this,
                new MyMissionID[] {},
                new MyMissionLocation(baseSector, (uint)EntityID.VendorSpeakDetector1),
                null,
                null,
                MyDialogueEnum.FORT_VALIANT_A_0100
                )
            {
                SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudFortValiant
            };
            m_objectives.Add(flyOne);


            var speakGateKeeper = new MyMeetObjective(
                (MyTextsWrapperEnum.FORT_VALIANT_SPEAK_GATE_KEEPER_Name),
                MyMissionID.FORT_VALIANT_SPEAK_GATE_KEEPER,
                (MyTextsWrapperEnum.FORT_VALIANT_SPEAK_GATE_KEEPER_Description),
                this,
                new MyMissionID[] { MyMissionID.FORT_VALIANT_FLY_ONE },
                (uint)EntityID.DetecorGateKeeper,
                (uint)EntityID.GateKeeper,
                25,
                0.25f,

                MyDialogueEnum.FORT_VALIANT_A_0200,
                null,
                false
                )
            {
                SaveOnSuccess = true, FollowMe = false
            };
            m_objectives.Add(speakGateKeeper);


            var speakCaptain = new MyMeetObjective(
                (MyTextsWrapperEnum.FORT_VALIANT_MEET_CAPTAIN_Name),
                MyMissionID.FORT_VALIANT_MEET_CAPTAIN,
                (MyTextsWrapperEnum.FORT_VALIANT_MEET_CAPTAIN_Description),
                this,
                new MyMissionID[] { MyMissionID.FORT_VALIANT_SPEAK_GATE_KEEPER },
                (uint)EntityID.DetectorCaptain,
                (uint)EntityID.Captain,
                50,
                0.25f,
                MyDialogueEnum.FORT_VALIANT_A_0300,
                null,
                false
                )
            {
                SaveOnSuccess = true, FollowMe = false
            };
            speakCaptain.OnMissionLoaded  += SpeakCaptainOnOnMissionLoaded;
            speakCaptain.OnMissionSuccess += SpeakCaptainOnOnMissionSuccess;
            m_objectives.Add(speakCaptain);

            m_visitVendor = new MyObjectiveEnterInventory(
                (MyTextsWrapperEnum.FORT_VALIANT_VISIT_VENDOR_Name),
                MyMissionID.FORT_VALIANT_VISIT_VENDOR,
                (MyTextsWrapperEnum.FORT_VALIANT_VISIT_VENDOR_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.FORT_VALIANT_MEET_CAPTAIN },
                (uint)EntityID.Vendor
                );
            m_visitVendor.OnMissionLoaded += MVisitVendorOnOnMissionLoaded;
            m_objectives.Add(m_visitVendor);
            #endregion
        }
        public MyWhiteWolvesResearchMission()
        {
            ID = MyMissionID.NAZI_BIO_LAB; /* ID must be added to MyMissions.cs */
            DebugName = new StringBuilder("18b-White Wolves bio research lab");
            Name = MyTextsWrapperEnum.NAZI_BIO_LAB;
            Description = MyTextsWrapperEnum.NAZI_BIO_LAB_Description;
            Flags = MyMissionFlags.Story;
            AchievementName = MySteamAchievementNames.Mission26_BioResearch;

            /* sector where the mission is located */
            Location = new MyMissionLocation(BaseSector, (uint)EntityID.TargetUse01); // Posledne cislo - ID dummy pointu kde prijimam misiu (v tomto pripade tiez 'player start')

            RequiredMissions = new MyMissionID[] { MyMissionID.REICHSTAG_A };
            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.NAZI_BIO_LAB_REACH_MEETING_POINT };
            RequiredActors = new MyActorEnum[] { MyActorEnum.TARJA, MyActorEnum.VALENTIN, MyActorEnum.MADELYN };


            m_objectives = new List<MyObjective>();

            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeGetOut, 0, (uint)EntityID.SpawnpointAtGettingOut1));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeGetOut, 0, (uint)EntityID.SpawnpointAtGettingOut2));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeGetOut, 0, (uint)EntityID.SpawnpointAtGettingOut3));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeGetOut, 0, (uint)EntityID.SpawnpointAtGettingOut4));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeEnteringWarehouseAtHigh, 0, (uint)EntityID.SpawnpointAtWarehouse1));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeEnteringWarehouseAtHigh, 0, (uint)EntityID.SpawnpointAtWarehouse2));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeEnteringWarehouseAtLow, 0, (uint)EntityID.SpawnpointUponWarehouse));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeEnteringBlueprintLocation, 0, (uint)EntityID.SpawnpointAtBlueprintLocation));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeEnteringMainConnectionRoom, 0, (uint)EntityID.SpawnpointAtConnectionRoom1));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeEnteringMainConnectionRoom, 0, (uint)EntityID.SpawnpointAtConnectionRoom2));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeEnteringBioBrainsCircularRoom, 0, (uint)EntityID.SpawnpointAtBrainsConnection));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeTakingBrainSample, 0, (uint)EntityID.SpawnpointAtBrains));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectroBeforeEnteringLowerPartOfBiomachine, 0, (uint)EntityID.SpawnpointAtLowerPartOfBiomach));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeEnteringHigherPartOfBiomachine, 0, (uint)EntityID.SpawnpointAtHigherPartOfBiomach1));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeEnteringHigherPartOfBiomachine, 0, (uint)EntityID.SpawnpointAtHigherPartOfBiomach2));

            var m_01GetBiomachSamples1 = new MyUseObjective(
                (MyTextsWrapperEnum.NAZI_BIO_LAB_SAMPLES_BIOMACH_1_Name),
                MyMissionID.NAZI_BIO_LAB_SAMPLES_BIOMACH_1,
                (MyTextsWrapperEnum.NAZI_BIO_LAB_SAMPLES_BIOMACH_1_Description),
                null,
                this,
                new MyMissionID[] {},
                new MyMissionLocation(BaseSector, (uint)EntityID.TargetUse01),
                MyTextsWrapperEnum.PressToPickSamples,
                MyTextsWrapperEnum.Samples,
                MyTextsWrapperEnum.PickingInProgress,
                3000, 
                MyUseObjectiveType.Hacking,
                MyDialogueEnum.WHITEWOLVES_RESEARCH_0200_ENTER
               ) { SaveOnSuccess = true };
            // destroySolarDefence.OnMissionSuccess += ToHangarSubmissionSuccess;
            m_objectives.Add(m_01GetBiomachSamples1);
            m_01GetBiomachSamples1.OnMissionLoaded += new MissionHandler(m_01GetBiomachSamples1_OnMissionLoaded);
            m_01GetBiomachSamples1.OnSuccessDialogueStarted += new MissionHandler(m_01GetBiomachSamples1_OnSuccessDialogueStarted);

            var m_02GetInsideBiomach = new MyObjective(
                (MyTextsWrapperEnum.NAZI_BIO_LAB_GET_INSIDE_Name),
                MyMissionID.NAZI_BIO_LAB_GET_INSIDE,
                (MyTextsWrapperEnum.NAZI_BIO_LAB_GET_INSIDE_Description),
                null,
                this,
                new MyMissionID[] {MyMissionID.NAZI_BIO_LAB_SAMPLES_BIOMACH_1},
                new MyMissionLocation(BaseSector, (uint) EntityID.Target02)
                ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudStation };
            // destroySolarDefence.OnMissionSuccess += ToHangarSubmissionSuccess;
            m_objectives.Add(m_02GetInsideBiomach);
                            

            var m_04GetOrganicSamples = new MyUseObjective(
                (MyTextsWrapperEnum.NAZI_BIO_LAB_SAMPLES_ORGANIC_Name),
                MyMissionID.NAZI_BIO_LAB_SAMPLES_ORGANIC,
                (MyTextsWrapperEnum.NAZI_BIO_LAB_SAMPLES_ORGANIC_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.NAZI_BIO_LAB_GET_INSIDE },
                new MyMissionLocation(BaseSector, (uint) EntityID.TargetUse04),
                MyTextsWrapperEnum.PressToPickSamples,
                MyTextsWrapperEnum.Samples,
                MyTextsWrapperEnum.PickingInProgress,
                3000,
                MyUseObjectiveType.Hacking,
                MyDialogueEnum.WHITEWOLVES_RESEARCH_0300_COLLECT2
                ) { SaveOnSuccess = true };
            // destroySolarDefence.OnMissionSuccess += ToHangarSubmissionSuccess;
            m_04GetOrganicSamples.OnMissionLoaded += new MissionHandler(m_04GetOrganicSamples_OnMissionLoaded);
            m_04GetOrganicSamples.OnSuccessDialogueStarted += new MissionHandler(m_04GetOrganicSamples_OnSuccessDialogueStarted);
            m_objectives.Add(m_04GetOrganicSamples);

            var m_05GetBiomachBlueprints = new MyUseObjective(
                (MyTextsWrapperEnum.NAZI_BIO_LAB_BLUEPRINTS_BIOMACH_Name),
                MyMissionID.NAZI_BIO_LAB_BLUEPRINTS_BIOMACH,
                (MyTextsWrapperEnum.NAZI_BIO_LAB_BLUEPRINTS_BIOMACH_Description),
                null,
                this,
                new MyMissionID[] {MyMissionID.NAZI_BIO_LAB_SAMPLES_ORGANIC},
                new MyMissionLocation(BaseSector, (uint) EntityID.TargetUse05),
                MyTextsWrapperEnum.PressToDownloadBluePrints,
                MyTextsWrapperEnum.DataTransfer,
                MyTextsWrapperEnum.DownloadingData, 
                3000
                ) { SaveOnSuccess = true };
            // destroySolarDefence.OnMissionSuccess += ToHangarSubmissionSuccess;
            m_objectives.Add(m_05GetBiomachBlueprints);
            m_05GetBiomachBlueprints.OnMissionLoaded += new MissionHandler(m_05GetBiomachBlueprints_OnMissionLoaded);
            m_05GetBiomachBlueprints.OnSuccessDialogueStarted += new MissionHandler(m_05GetBiomachBlueprints_OnSuccessDialogueStarted);

            var m_07GetOut = new MyObjective(
            (MyTextsWrapperEnum.NAZI_BIO_LAB_GET_OUT_Name),
            MyMissionID.NAZI_BIO_LAB_GET_OUT,
            (MyTextsWrapperEnum.NAZI_BIO_LAB_GET_OUT_Description),
            null,
            this,
            new MyMissionID[] { MyMissionID.NAZI_BIO_LAB_BLUEPRINTS_BIOMACH },
            new MyMissionLocation(BaseSector, (uint)EntityID.Target07)
        ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.Nothing };
            // destroySolarDefence.OnMissionSuccess += ToHangarSubmissionSuccess;
            m_07GetOut.OnMissionLoaded += new MissionHandler(m_07GetOut_OnMissionLoaded);
            m_objectives.Add(m_07GetOut);


            var m_08Destroy = new MyObjectiveDestroy(
                (MyTextsWrapperEnum.NAZI_BIO_LAB_DESTROY_Name),
                MyMissionID.NAZI_BIO_LAB_DESTROY,
                (MyTextsWrapperEnum.NAZI_BIO_LAB_DESTROY_Description),
                null,
                this,
                new MyMissionID[] {MyMissionID.NAZI_BIO_LAB_GET_OUT,},
                new List<uint>() {(uint) EntityID.Target08},
                null,
                true,
                false
                ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.Nothing };

            m_objectives.Add(m_08Destroy);
            m_08Destroy.OnMissionLoaded += M08DestroyOnMissionLoaded;
            m_08Destroy.OnMissionSuccess += M08DestroyOnMissionSuccess;

            var returnToMothership = new MyObjective(
               (MyTextsWrapperEnum.NAZI_BIO_LAB_REACH_MEETING_POINT_Name),
               MyMissionID.NAZI_BIO_LAB_REACH_MEETING_POINT,
               (MyTextsWrapperEnum.NAZI_BIO_LAB_REACH_MEETING_POINT_Description),
               null,
               this,
               new MyMissionID[] { MyMissionID.NAZI_BIO_LAB_DESTROY },
                //new MyMissionLocation(baseSector, (uint)EntityID.HangerEscapeLocation)
               new MyMissionLocation(BaseSector, MyMissionLocation.MADELYN_HANGAR),
               radiusOverride: MyMissionLocation.MADELYN_HANGAR_RADIUS
           ) { HudName = MyTextsWrapperEnum.HudMadelynsSapho };
            returnToMothership.OnMissionLoaded += new MissionHandler(returnToMothership_OnMissionLoaded);
            m_objectives.Add(returnToMothership);

        }
        public MyResearchVesselMission()
        {
            ID          = MyMissionID.RESEARCH_VESSEL;
            DebugName   = new StringBuilder("12-Eurydice/Osaka");
            Name        = MyTextsWrapperEnum.RESEARCH_VESSEL;
            Description = MyTextsWrapperEnum.RESEARCH_VESSEL_Description;
            Flags       = MyMissionFlags.Story;

            MyMwcVector3Int baseSector = new MyMwcVector3Int(4189723, 0, -2201402);

            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation);

            RequiredMissions           = new MyMissionID[] { MyMissionID.RIME_CONVINCE };
            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.RESEARCH_VESSEL_TAKE_FOURTH };
            RequiredActors             = new MyActorEnum[] { MyActorEnum.MARCUS, MyActorEnum.MADELYN, MyActorEnum.TARJA, MyActorEnum.VALENTIN };


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

            var introDialogue = new MyObjectiveDialog(
                MyMissionID.RESEARCH_VESSEL_INTRO,
                null,
                this,
                new MyMissionID[] { },
                MyDialogueEnum.RESEARCH_VESSEL_0100_INTRO
                )
            {
                SaveOnSuccess = true
            };
            m_objectives.Add(introDialogue);


            var reachShip = new MyObjective(
                MyTextsWrapperEnum.RESEARCH_VESSEL_REACH_SHIP,
                MyMissionID.RESEARCH_VESSEL_REACH_SHIP,
                MyTextsWrapperEnum.RESEARCH_VESSEL_REACH_SHIP_Description,
                null,
                this,
                new MyMissionID[] { MyMissionID.RESEARCH_VESSEL_INTRO },
                new MyMissionLocation(baseSector, (uint)EntityID.DummyReachShip)
                )
            {
                SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudEurydice
            };
            reachShip.OnMissionSuccess += new MissionHandler(ReachShip_Success);
            m_objectives.Add(reachShip);


            var checkCargo = new MyObjective(
                MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_CARGO,
                MyMissionID.RESEARCH_VESSEL_CHECK_CARGO,
                MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_CARGO_Description,
                null,
                this,
                new MyMissionID[] { MyMissionID.RESEARCH_VESSEL_REACH_SHIP },
                new MyMissionLocation(baseSector, (uint)EntityID.checkpoint_1)
                )
            {
                SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudContainer
            };
            m_objectives.Add(checkCargo);


            var checkCommandRoom = new MyObjective(
                MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_COMMAND_ROOM,
                MyMissionID.RESEARCH_VESSEL_CHECK_COMMAND_ROOM,
                MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_COMMAND_ROOM_Description,
                null,
                this,
                new MyMissionID[] { MyMissionID.RESEARCH_VESSEL_CHECK_CARGO },
                new MyMissionLocation(baseSector, (uint)EntityID.DummyNearHub1)
                )
            {
                SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudCommandRoom
            };
            checkCommandRoom.OnMissionLoaded += new MissionHandler(checkCommandRoom_OnMissionLoaded);
            m_objectives.Add(checkCommandRoom);


            var unlockFirstCargo = new MyObjectiveEnablePrefabs(
                MyTextsWrapperEnum.RESEARCH_VESSEL_USE_HUB_1,
                MyMissionID.RESEARCH_VESSEL_USE_HUB_1,
                MyTextsWrapperEnum.RESEARCH_VESSEL_USE_HUB_1_Description,
                null,
                this,
                new MyMissionID[] { MyMissionID.RESEARCH_VESSEL_CHECK_COMMAND_ROOM },
                null,
                new List <uint> {
                (uint)EntityID.Hub1
            },
                new List <uint> {
                (uint)EntityID.Door1
            }
                )
            {
                SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudHub
            };
            m_objectives.Add(unlockFirstCargo);


            var checkLaboratory = new MyObjective(
                MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_LABORATORY,
                MyMissionID.RESEARCH_VESSEL_CHECK_LABORATORY,
                MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_LABORATORY_Description,
                null,
                this,
                new MyMissionID[] { MyMissionID.RESEARCH_VESSEL_USE_HUB_1 },
                new MyMissionLocation(baseSector, (uint)EntityID.checkpoint_14)
                )
            {
                SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudLab
            };
            m_objectives.Add(checkLaboratory);


            var takeFirstParts = new MyUseObjective(
                MyTextsWrapperEnum.RESEARCH_VESSEL_TAKE_FIRST,
                MyMissionID.RESEARCH_VESSEL_TAKE_FIRST,
                MyTextsWrapperEnum.RESEARCH_VESSEL_TAKE_FIRST_Description,
                null,
                this,
                new MyMissionID[] { MyMissionID.RESEARCH_VESSEL_CHECK_LABORATORY },
                new MyMissionLocation(baseSector, (uint)EntityID.Cargo3),
                MyTextsWrapperEnum.PressToTakeComponent,
                MyTextsWrapperEnum.Component,
                MyTextsWrapperEnum.TakingInProgress,
                1000,
                MyUseObjectiveType.Activating,
                radiusOverride: 50
                )
            {
                SaveOnSuccess = true
            };
            takeFirstParts.OnMissionSuccess += TakeFirstParts_Success;
            m_objectives.Add(takeFirstParts);


            var checkWarehouse = new MyObjective(
                MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_WAREHOUSE,
                MyMissionID.RESEARCH_VESSEL_CHECK_WAREHOUSE,
                MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_WAREHOUSE_Description,
                null,
                this,
                new MyMissionID[] { MyMissionID.RESEARCH_VESSEL_TAKE_FIRST },
                new MyMissionLocation(baseSector, (uint)EntityID.checkpoint_4)
                )
            {
                SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudWarehouse
            };
            m_objectives.Add(checkWarehouse);


            var checkDrillMachineRoom = new MyObjective(
                MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_DRILL_ROOM,
                MyMissionID.RESEARCH_VESSEL_CHECK_DRILL_ROOM,
                MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_DRILL_ROOM_Description,
                null,
                this,
                new MyMissionID[] { MyMissionID.RESEARCH_VESSEL_CHECK_WAREHOUSE },
                new MyMissionLocation(baseSector, (uint)EntityID.checkpoint_5)
                )
            {
                SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudDrillRoom
            };
            checkDrillMachineRoom.OnMissionSuccess += new MissionHandler(checkDrillMachineRoom_OnMissionSuccess);
            m_objectives.Add(checkDrillMachineRoom);


            var checkFirstHangar = new MyObjective(
                MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_FIRST_HANGAR,
                MyMissionID.RESEARCH_VESSEL_CHECK_FIRST_HANGAR,
                MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_FIRST_HANGAR_Description,
                null,
                this,
                new MyMissionID[] { MyMissionID.RESEARCH_VESSEL_CHECK_DRILL_ROOM },
                new MyMissionLocation(baseSector, (uint)EntityID.DummyNearHub2)
                )
            {
                SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudHangar
            };
            m_objectives.Add(checkFirstHangar);


            var takeSecondParts = new MyUseObjective(
                MyTextsWrapperEnum.RESEARCH_VESSEL_TAKE_SECOND,
                MyMissionID.RESEARCH_VESSEL_TAKE_SECOND,
                MyTextsWrapperEnum.RESEARCH_VESSEL_TAKE_SECOND_Description,
                null,
                this,
                new MyMissionID[] { MyMissionID.RESEARCH_VESSEL_CHECK_FIRST_HANGAR },
                new MyMissionLocation(baseSector, (uint)EntityID.Cargo4),
                MyTextsWrapperEnum.PressToTakeComponent,
                MyTextsWrapperEnum.Component,
                MyTextsWrapperEnum.TakingInProgress,
                1000,
                MyUseObjectiveType.Activating,
                radiusOverride: 50
                )
            {
                SaveOnSuccess = true
            };
            takeSecondParts.OnMissionSuccess += TakeSecondParts_Success;
            m_objectives.Add(takeSecondParts);


            var useHub2 = new MyObjectiveEnablePrefabs(
                MyTextsWrapperEnum.RESEARCH_VESSEL_USE_HUB_2,
                MyMissionID.RESEARCH_VESSEL_USE_HUB_2,
                MyTextsWrapperEnum.RESEARCH_VESSEL_USE_HUB_2_Description,
                null,
                this,
                new MyMissionID[] { MyMissionID.RESEARCH_VESSEL_TAKE_SECOND },
                null,
                new List <uint> {
                (uint)EntityID.Hub2
            },
                new List <uint> {
                (uint)EntityID.Door2
            }
                )
            {
                SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudHub
            };
            m_objectives.Add(useHub2);


            var checkSecondHangar = new MyObjective(
                MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_SECOND_HANGAR,
                MyMissionID.RESEARCH_VESSEL_CHECK_SECOND_HANGAR,
                MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_SECOND_HANGAR_Description,
                null,
                this,
                new MyMissionID[] { MyMissionID.RESEARCH_VESSEL_USE_HUB_2 },
                new MyMissionLocation(baseSector, (uint)EntityID.checkpoint_7)
                )
            {
                SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudHangar
            };
            m_objectives.Add(checkSecondHangar);


            var checkThirdHangar = new MyObjective(
                MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_THIRD_HANGAR,
                MyMissionID.RESEARCH_VESSEL_CHECK_THIRD_HANGAR,
                MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_THIRD_HANGAR_Description,
                null,
                this,
                new MyMissionID[] { MyMissionID.RESEARCH_VESSEL_CHECK_SECOND_HANGAR },
                new MyMissionLocation(baseSector, (uint)EntityID.checkpoint_8)
                )
            {
                SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudHangar
            };
            m_objectives.Add(checkThirdHangar);


            var checkSecondWarehouse = new MyObjective(
                MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_SECOND_WAREHOUSE,
                MyMissionID.RESEARCH_VESSEL_CHECK_SECOND_WAREHOUSE,
                MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_SECOND_WAREHOUSE_Description,
                null,
                this,
                new MyMissionID[] { MyMissionID.RESEARCH_VESSEL_CHECK_THIRD_HANGAR },
                new MyMissionLocation(baseSector, (uint)EntityID.checkpoint_9)
                )
            {
                SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudWarehouse
            };
            m_objectives.Add(checkSecondWarehouse);


            var checkGenerator = new MyObjective(
                MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_GENERATOR,
                MyMissionID.RESEARCH_VESSEL_CHECK_GENERATOR,
                MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_GENERATOR_Description,
                null,
                this,
                new MyMissionID[] { MyMissionID.RESEARCH_VESSEL_CHECK_SECOND_WAREHOUSE },
                new MyMissionLocation(baseSector, (uint)EntityID.DummyNearHub3)
                )
            {
                SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudGeneratorRoom
            };
            m_objectives.Add(checkGenerator);


            var useHub3 = new MyObjectiveEnablePrefabs(
                MyTextsWrapperEnum.RESEARCH_VESSEL_USE_HUB_3,
                MyMissionID.RESEARCH_VESSEL_USE_HUB_3,
                MyTextsWrapperEnum.RESEARCH_VESSEL_USE_HUB_3_Description,
                null,
                this,
                new MyMissionID[] { MyMissionID.RESEARCH_VESSEL_CHECK_GENERATOR },
                null,
                new List <uint> {
                (uint)EntityID.Hub3
            },
                new List <uint> {
                (uint)EntityID.Door3
            }
                )
            {
                SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudHub
            };
            useHub3.OnMissionSuccess += new MissionHandler(UseHub3_Success);
            m_objectives.Add(useHub3);

            var takeThridProbe = new MyUseObjective(
                MyTextsWrapperEnum.RESEARCH_VESSEL_TAKE_THIRD,
                MyMissionID.RESEARCH_VESSEL_TAKE_THIRD,
                MyTextsWrapperEnum.RESEARCH_VESSEL_TAKE_THIRD_Description,
                null,
                this,
                new MyMissionID[] { MyMissionID.RESEARCH_VESSEL_USE_HUB_3 },
                new MyMissionLocation(baseSector, (uint)EntityID.Cargo2),
                MyTextsWrapperEnum.PressToTakeComponent,
                MyTextsWrapperEnum.Component,
                MyTextsWrapperEnum.TakingInProgress,
                1000,
                MyUseObjectiveType.Activating,
                radiusOverride: 50
                )
            {
                SaveOnSuccess = true
            };
            takeThridProbe.OnMissionSuccess += TakeThirdParts_Success;
            m_objectives.Add(takeThridProbe);

            var takeThridProbeDialogue = new MyObjectiveDialog(
                MyTextsWrapperEnum.Null,
                MyMissionID.RESEARCH_VESSEL_TAKE_THIRD_DIALOGUE,
                MyTextsWrapperEnum.Null,
                null,
                this,
                new MyMissionID[] { MyMissionID.RESEARCH_VESSEL_TAKE_THIRD },
                MyDialogueEnum.RESEARCH_VESSEL_0700_THIRDPARTS);
            m_objectives.Add(takeThridProbeDialogue);

            var checkCargoAgain = new MyObjective(
                MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_CARGO_AGAIN,
                MyMissionID.RESEARCH_VESSEL_CHECK_CARGO_AGAIN,
                MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_CARGO_AGAIN_Description,
                null,
                this,
                new MyMissionID[] { MyMissionID.RESEARCH_VESSEL_TAKE_THIRD_DIALOGUE },
                new MyMissionLocation(baseSector, (uint)EntityID.checkpoint_1)
                )
            {
                SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudContainer
            };
            checkCargoAgain.OnMissionSuccess += new MissionHandler(CheckCargoAgain_Success);
            m_objectives.Add(checkCargoAgain);

            var takeFourthParts = new MyUseObjective(
                MyTextsWrapperEnum.RESEARCH_VESSEL_TAKE_FOURTH,
                MyMissionID.RESEARCH_VESSEL_TAKE_FOURTH,
                MyTextsWrapperEnum.RESEARCH_VESSEL_TAKE_FOURTH_Description,
                null,
                this,
                new MyMissionID[] { MyMissionID.RESEARCH_VESSEL_CHECK_CARGO_AGAIN },
                new MyMissionLocation(baseSector, (uint)EntityID.Cargo1),
                MyTextsWrapperEnum.PressToTakeComponent,
                MyTextsWrapperEnum.Component,
                MyTextsWrapperEnum.TakingInProgress,
                1000,
                MyUseObjectiveType.Activating,
                radiusOverride: 50
                )
            {
                SaveOnSuccess = false
            };
            takeFourthParts.OnMissionSuccess += TakeFourthParts_Success;
            m_objectives.Add(takeFourthParts);


            #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 MyEACPrisonMission()
        {
            ID              = MyMissionID.EAC_PRISON; /* ID must be added to MyMissions.cs */
            DebugName       = new StringBuilder("20-EAC prison");
            Name            = MyTextsWrapperEnum.EAC_PRISON;
            Description     = MyTextsWrapperEnum.EAC_PRISON_Description;
            Flags           = MyMissionFlags.Story;
            AchievementName = MySteamAchievementNames.Mission29_EacPrison;

            MyMwcVector3Int baseSector = new MyMwcVector3Int(5480055, 0, -5077310);

            /* sector where the mission is located */
            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation); //posledne cislo - ID dummy pointu kde prijimam misiu

            RequiredMissions           = new MyMissionID[] { MyMissionID.TWIN_TOWERS };
            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.EAC_PRISON_MEETINGPOINT };
            RequiredActors             = new MyActorEnum[] { MyActorEnum.TARJA, MyActorEnum.VALENTIN, MyActorEnum.MADELYN, MyActorEnum.MARCUS };

            m_objectives = new List <MyObjective>();

            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeStorage, 0, (uint)EntityID.SpawnpointAtStorage));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeIndustry, 0, (uint)EntityID.SpawnpointAtIndustry1));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeIndustry, 0, (uint)EntityID.SpawnpointAtIndustry2));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeParking, 0, (uint)EntityID.SpawnpointAtParking));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeMines, 0, (uint)EntityID.SpawnpointAtMines));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeMinesEntrance, 0, (uint)EntityID.SpawnpointAtMinesEntrance));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeMarcusCell, 0, (uint)EntityID.SpawnpointAtMarcusCell));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeSecurityCheck7, 0, (uint)EntityID.SpawnpointAtSecurityCheck7));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeSecurityCheck6, 0, (uint)EntityID.SpawnpointAtSecurityCheck6));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeSecurityCheck8, 0, (uint)EntityID.SpawnpointAtSecurityCheck8));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeSecurityCheck4, 0, (uint)EntityID.SpawnpointAtSecurityCheck4));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeCellAfterSecurityCheck4, 0, (uint)EntityID.SpawnpointAtCellAfterSecurityCheck4));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeSecurityCheck5, 0, (uint)EntityID.SpawnpointAtSecurityCheck5));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeCell1AfterSecurityCheck5, 0, (uint)EntityID.SpawnpointAtCell1AfterSecurityCheck5));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeCell2AfterSecurityCheck5, 0, (uint)EntityID.SpawnpointAtCell2AfterSecurityCheck5));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeCell3AfterSecurityCheck5, 0, (uint)EntityID.SpawnpointAtCell3AfterSecurityCheck5));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeSecurityCheck3, 0, (uint)EntityID.SpawnpointAtSecurityCheck3));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeCell1AfterSecurityCheck3, 0, (uint)EntityID.SpawnpointAtCell1AfterSecurityCheck3));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeCell2AfterSecurityCheck3, 0, (uint)EntityID.SpawnpointAtCell2AfterSecurityCheck3));

            //Components.Add(new MySpawnpointWaves(detectorId, 3, new List<uint[]> {
            //    new uint[] { spawnpointId1, spawnpointId2, spawnpointId3 },
            //    new uint[] { spawnpointId4, spawnpointId5 }}));

            //01
            var mothershipBattle = new MyObjective(
                (MyTextsWrapperEnum.EAC_PRISON_THRUSWARM_Name),
                MyMissionID.EAC_PRISON_THRUSWARM,
                (MyTextsWrapperEnum.EAC_PRISON_THRUSWARM_Description),
                null,
                this,
                new MyMissionID[] {},
                new MyMissionLocation(baseSector, (uint)EntityID.MotherShiBattleLocationDummy)
                )
            {
                SaveOnSuccess = true, StartDialogId = MyDialogueEnum.EAC_PRISON_0100, SuccessDialogId = MyDialogueEnum.EAC_PRISON_0200
            };

            m_objectives.Add(mothershipBattle);
            //mothershipBattle.Components.Add(new MySpawnpointWaves(77073, 0, 76625));
            mothershipBattle.OnMissionLoaded += mothershipBattle_OnMissionLoaded;

            //02

            var destroySolarDefence = new MyObjectiveDestroy(
                (MyTextsWrapperEnum.EAC_PRISON_SOLARDEF_Name),
                MyMissionID.EAC_PRISON_SOLARDEF,
                (MyTextsWrapperEnum.EAC_PRISON_SOLARDEF_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.EAC_PRISON_THRUSWARM },
                m_02toKill
                )
            {
                SaveOnSuccess = true, StartDialogId = MyDialogueEnum.EAC_PRISON_0300
            };

            destroySolarDefence.OnMissionSuccess += DestroySolarDefenceOnOnMissionSuccess;
            m_objectives.Add(destroySolarDefence);
            destroySolarDefence.OnMissionLoaded += destroySolarDefence_OnMissionLoaded;

            //03
            m_destroySolarPanelsFirst = new MyObjective(
                (MyTextsWrapperEnum.EAC_PRISON_SOLAROFF1_Name),
                MyMissionID.EAC_PRISON_SOLAROFF1,
                (MyTextsWrapperEnum.EAC_PRISON_SOLAROFF1_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.EAC_PRISON_SOLARDEF },
                null
                )
            {
                SaveOnSuccess = false
            };
            m_destroySolarPanelsFirst.OnMissionLoaded  += DestroySolarPanelsFirstSubmissionLoaded;
            m_destroySolarPanelsFirst.OnMissionSuccess += DestroySolarPanelsFirstSubmissionSuccess;
            m_objectives.Add(m_destroySolarPanelsFirst);
            m_destroySolarPanelsFirst.SaveOnSuccess = true;

            //04
            var motherShipHelp = new MyObjectiveDestroy(
                (MyTextsWrapperEnum.EAC_PRISON_MOTHERSHIPHELP_Name),
                MyMissionID.EAC_PRISON_MOTHERSHIPHELP,
                (MyTextsWrapperEnum.EAC_PRISON_MOTHERSHIPHELP_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.EAC_PRISON_SOLAROFF1 },
                m_04toKill
                )
            {
                SaveOnSuccess = false, StartDialogId = MyDialogueEnum.EAC_PRISON_0400, SuccessDialogId = MyDialogueEnum.EAC_PRISON_0500
            };

            m_objectives.Add(motherShipHelp);
            motherShipHelp.OnMissionLoaded += new MissionHandler(motherShipHelp_OnMissionLoaded);

            //05
            m_destroySolarPanelsSecond = new MyObjective(
                (MyTextsWrapperEnum.EAC_PRISON_SOLAROFF2_Name),
                MyMissionID.EAC_PRISON_SOLAROFF2,
                (MyTextsWrapperEnum.EAC_PRISON_SOLAROFF2_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.EAC_PRISON_MOTHERSHIPHELP },
                null
                )
            {
                SaveOnSuccess = true,
            };
            m_destroySolarPanelsSecond.OnMissionLoaded  += DestroySolarPanelsSecondSubmissionLoaded;
            m_destroySolarPanelsSecond.OnMissionSuccess += DestroySolarPanelsSecondSubmissionSuccess;
            m_objectives.Add(m_destroySolarPanelsSecond);

            //06
            var breakInsideStation = new MyTimedReachLocationObjective(
                (MyTextsWrapperEnum.EAC_PRISON_BREAKIN_Name),
                MyMissionID.EAC_PRISON_BREAKIN,
                (MyTextsWrapperEnum.EAC_PRISON_BREAKIN_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.EAC_PRISON_SOLAROFF2 },
                new System.TimeSpan(0, 1, 0),
                new MyMissionLocation(baseSector, (uint)EntityID.BreakInsideStationLocationDummy)
                )
            {
                SaveOnSuccess = true, StartDialogId = MyDialogueEnum.EAC_PRISON_0600, HudName = MyTextsWrapperEnum.HudCargoBay
            };

            breakInsideStation.OnMissionSuccess += BreakInsideStationSubmissionSuccess;
            breakInsideStation.OnMissionLoaded  += BreakInsideStationOnOnMissionLoaded;
            m_objectives.Add(breakInsideStation);

            //07
            var marcusLocationIntel = new MyUseObjective(
                (MyTextsWrapperEnum.EAC_PRISON_LOCINTEL_Name),
                MyMissionID.EAC_PRISON_LOCINTEL,
                (MyTextsWrapperEnum.EAC_PRISON_LOCINTEL_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.EAC_PRISON_BREAKIN },
                new MyMissionLocation(baseSector, (uint)EntityID._MarcusIntelLocation),
                MyTextsWrapperEnum.PressToDownloadData,
                MyTextsWrapperEnum.Console,
                MyTextsWrapperEnum.DownloadingData,
                5000,
                MyUseObjectiveType.Hacking
                )
            {
                SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudSecurityHub
            };

            m_objectives.Add(marcusLocationIntel);
            marcusLocationIntel.OnMissionLoaded  += new MissionHandler(marcusLocationIntel_OnMissionLoaded);
            marcusLocationIntel.OnMissionSuccess += MarcusLocationIntelOnOnMissionSuccess;
            marcusLocationIntel.Components.Add(new MySpawnpointLimiter(m_spawns, 6));

            //08
            m_findCircoutPart = new MyUseObjective(
                (MyTextsWrapperEnum.EAC_PRISON_ACQUIREIDCARD_Name),
                MyMissionID.EAC_PRISON_ACQUIREIDCARD,
                (MyTextsWrapperEnum.EAC_PRISON_ACQUIREIDCARD_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.EAC_PRISON_LOCINTEL },
                new MyMissionLocation(baseSector, (uint)EntityID.CargoIDCard),
                MyTextsWrapperEnum.PressToTakeCargo,
                MyTextsWrapperEnum.TakeAll,
                MyTextsWrapperEnum.TakeAll,
                2000,
                MyUseObjectiveType.Taking,
                radiusOverride: 50
                )
            {
                SaveOnSuccess = true, StartDialogId = MyDialogueEnum.EAC_PRISON_0700, HudName = MyTextsWrapperEnum.HudIdCard
            };

            m_findCircoutPart.OnMissionLoaded  += OnFindCircuitLoaded;
            m_findCircoutPart.OnMissionSuccess += new MissionHandler(m_findCircoutPart_OnMissionSuccess);
            m_objectives.Add(m_findCircoutPart);


            var marcusLocationIntel2 = new MyUseObjective(
                (MyTextsWrapperEnum.EAC_PRISON_LOCINTEL2_Name),
                MyMissionID.EAC_PRISON_LOCINTEL2,
                (MyTextsWrapperEnum.EAC_PRISON_LOCINTEL2_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.EAC_PRISON_ACQUIREIDCARD },
                new MyMissionLocation(baseSector, (uint)EntityID._MarcusIntelLocation),
                MyTextsWrapperEnum.PressToDownloadData,
                MyTextsWrapperEnum.Console,
                MyTextsWrapperEnum.DownloadingData,
                5000,
                MyUseObjectiveType.Hacking
                )
            {
                SaveOnSuccess = true, SuccessDialogId = MyDialogueEnum.EAC_PRISON_0900, StartDialogId = MyDialogueEnum.EAC_PRISON_0800, HudName = MyTextsWrapperEnum.HudSecurityHub
            };

            m_objectives.Add(marcusLocationIntel2);

            //09
            var openDoors = new MyObjectiveEnablePrefabs(
                (MyTextsWrapperEnum.EAC_PRISON_OPENACCESS_Name),
                MyMissionID.EAC_PRISON_OPENACCESS,
                (MyTextsWrapperEnum.EAC_PRISON_OPENACCESS_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.EAC_PRISON_LOCINTEL2 },
                null,
                new List <uint> {
                (int)EntityID.SecurityHub
            },
                m_09toEnablePrefabs
                )
            {
                SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudSecurityHub
            };

            m_objectives.Add(openDoors);

            openDoors.OnMissionLoaded += OnOpenDoorsLoaded;

            //10
            var takeOffSecurityCircuit = new MyObjectiveDisablePrefabs(
                (MyTextsWrapperEnum.EAC_PRISON_SECURITYOFF_Name),
                MyMissionID.EAC_PRISON_SECURITYOFF,
                (MyTextsWrapperEnum.EAC_PRISON_SECURITYOFF_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.EAC_PRISON_OPENACCESS },
                new List <uint> {
                (uint)EntityID.HubHack
            },
                new List <uint> {
                (uint)EntityID.HubHackGenerator
            },
                false,
                false
                )
            {
                SaveOnSuccess = true, StartDialogId = MyDialogueEnum.EAC_PRISON_1000, HudName = MyTextsWrapperEnum.HudHub
            };

            takeOffSecurityCircuit.OnMissionLoaded += OntakeOffSecuritypartLoaded;//zapne svetlo
            m_objectives.Add(takeOffSecurityCircuit);

            //11
            var approachMarcusCell = new MyUseObjective(
                (MyTextsWrapperEnum.EAC_PRISON_MARCUSCELL_Name),
                MyMissionID.EAC_PRISON_MARCUSCELL,
                (MyTextsWrapperEnum.EAC_PRISON_MARCUSCELL_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.EAC_PRISON_SECURITYOFF },
                new MyMissionLocation(baseSector, (uint)EntityID.MarcusCellLocation),
                MyTextsWrapperEnum.HoldToMoveMarcus,
                MyTextsWrapperEnum.Actor_Marcus,
                MyTextsWrapperEnum.Moving,
                4000,
                MyUseObjectiveType.Taking
                )
            {
                SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudMarcus
            };

            approachMarcusCell.OnMissionLoaded += OnapproachMarcusLoaded;
            m_objectives.Add(approachMarcusCell);

            var marcusLoaded = new MyObjectiveDialog(
                MyMissionID.EAC_PRISON_MARCUSDIALOG,
                null,
                this,
                new MyMissionID[] { MyMissionID.EAC_PRISON_MARCUSCELL },
                MyDialogueEnum.EAC_PRISON_1200
                )
            {
                SaveOnSuccess = true
            };

            marcusLoaded.OnMissionLoaded += OnMarcusLoadedLoaded;
            m_objectives.Add(marcusLoaded);

            var weHaveCompany = new MyObjectiveDialog(
                MyMissionID.EAC_PRISON_WE_HAVE_COMPANY,
                null,
                this,
                new MyMissionID[] { MyMissionID.EAC_PRISON_MARCUSDIALOG },
                MyDialogueEnum.EAC_PRISON_1250
                )
            {
                SaveOnSuccess = false
            };

            weHaveCompany.OnMissionLoaded += OnWeHaveCompanyLoaded;
            m_objectives.Add(weHaveCompany);

            //12
            var findMarcusSmallShip = new MyUseObjective(
                (MyTextsWrapperEnum.EAC_PRISON_COVERMARCUS_Name),
                MyMissionID.EAC_PRISON_COVERMARCUS,
                (MyTextsWrapperEnum.EAC_PRISON_COVERMARCUS_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.EAC_PRISON_WE_HAVE_COMPANY },
                new MyMissionLocation(baseSector, (uint)EntityID.MarcusShipDetector),
                MyTextsWrapperEnum.HoldToMoveMarcus,
                MyTextsWrapperEnum.Actor_Marcus,
                MyTextsWrapperEnum.Moving,
                4000,
                MyUseObjectiveType.Putting
                )
            {
                SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudShip
            };

            // destroySolarDefence.OnMissionSuccess += ToHangarSubmissionSuccess;
            m_objectives.Add(findMarcusSmallShip);
            findMarcusSmallShip.OnMissionSuccess += OnSuccesfindMarcusSmallShip;

            //13
            var equipMarcus = new MyUseObjective(
                (MyTextsWrapperEnum.EAC_PRISON_GETARMS_Name),
                MyMissionID.EAC_PRISON_GETARMS,
                (MyTextsWrapperEnum.EAC_PRISON_GETARMS_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.EAC_PRISON_COVERMARCUS },
                new MyMissionLocation(baseSector, (uint)EntityID.CargoForMarcus),
                MyTextsWrapperEnum.HoldToMoveWeapons,
                MyTextsWrapperEnum.Actor_Marcus,
                MyTextsWrapperEnum.Moving,
                4000
                )
            {
                SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudEquipment
            };

            // destroySolarDefence.OnMissionSuccess += ToHangarSubmissionSuccess;
            m_objectives.Add(equipMarcus);
            equipMarcus.OnMissionSuccess += OnEquipMarcussSucces;
            equipMarcus.OnMissionLoaded  += EquipMarcusOnOnMissionLoaded;

            //14
            var fightOutStation = new MyObjective(
                (MyTextsWrapperEnum.EAC_PRISON_FIGHTOUT_Name),
                MyMissionID.EAC_PRISON_FIGHTOUT,
                (MyTextsWrapperEnum.EAC_PRISON_FIGHTOUT_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.EAC_PRISON_GETARMS },
                new MyMissionLocation(baseSector, (uint)EntityID.StationDummy)
                )
            {
                SaveOnSuccess = true, StartDialogId = MyDialogueEnum.EAC_PRISON_1300, SuccessDialogId = MyDialogueEnum.EAC_PRISON_1400, HudName = MyTextsWrapperEnum.Nothing
            };

            fightOutStation.OnMissionLoaded  += fightOutStation_OnMissionLoaded;
            fightOutStation.OnMissionSuccess += fightOutStation_OnMissionSuccess;
            m_objectives.Add(fightOutStation);

            //15
            var CrushRemainingShips = new MyObjectiveDestroy(
                (MyTextsWrapperEnum.EAC_PRISON_CRUSHREINFORCEMENTS_Name),
                MyMissionID.EAC_PRISON_CRUSHREINFORCEMENTS,
                (MyTextsWrapperEnum.EAC_PRISON_CRUSHREINFORCEMENTS_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.EAC_PRISON_FIGHTOUT },
                new List <uint> {
            },                          // entities needed to kill
                m_15toKillSpawnpoints,  // spawnpoint from which bots must be killed
                false                   // don't show marks on entities (not from spawnpoint)
                )
            {
                SaveOnSuccess = true,
            };

            m_objectives.Add(CrushRemainingShips);

            //16
            var GetToMeetingPoint = new MyObjective(
                (MyTextsWrapperEnum.EAC_PRISON_MEETINGPOINT_Name),
                MyMissionID.EAC_PRISON_MEETINGPOINT,
                (MyTextsWrapperEnum.EAC_PRISON_MEETINGPOINT_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.EAC_PRISON_CRUSHREINFORCEMENTS },
                new MyMissionLocation(baseSector, MyMissionLocation.MADELYN_HANGAR),
                radiusOverride: MyMissionLocation.MADELYN_HANGAR_RADIUS
                )
            {
                SaveOnSuccess = true, StartDialogId = MyDialogueEnum.EAC_PRISON_1500, SuccessDialogId = MyDialogueEnum.EAC_PRISON_1600, HudName = MyTextsWrapperEnum.HudMeetingPoint
            };

            m_objectives.Add(GetToMeetingPoint);
        }
        public MySmallPirateBase2Mission()
        {
            ID = MyMissionID.SMALL_PIRATE_BASE_2; /* ID must be added to MyMissions.cs */
            DebugName = new StringBuilder("Small pirate base 2"); // Nazev mise
            Name = MyTextsWrapperEnum.SMALL_PIRATE_BASE_2;
            Description = MyTextsWrapperEnum.SMALL_PIRATE_BASE_2_Description;

            MyMwcVector3Int baseSector = new MyMwcVector3Int(9708260,0,-2101810); // Story sector of the script

            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation); // Starting dummy point

            RequiredMissions = new MyMissionID[] { }; // mise ktere musi byt splneny pred prijetim teto mise
            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.SMALL_PIRATE_BASE_2_KILL_GENERAL };
            RequiredActors = new MyActorEnum[] { MyActorEnum.MARCUS, MyActorEnum.MADELYN, MyActorEnum.TARJA, MyActorEnum.VALENTIN };

            m_objectives = new List<MyObjective>(); // Creating of list of submissions
            // START DEFINICE SUBMISE
            
           /* DestroyEnemies = new MyObjectiveDestroy( // Var is used to call functions on that member
                    new StringBuilder("Destroy the mothership"),
                    MyMissionID.SMALL_PIRATE_BASE_2_DESTROY_MOTHERSHIP,
                    new StringBuilder(""),
                    null,
                    this,
                    new MyMissionID[] { },
                    new List<uint> { (uint)EntityID.Mothership },
                    new List<uint> { },
                    false
            ) { SaveOnSuccess = false };
            m_objectives.Add(DestroyEnemies); // pridani do seznamu submisi*/
        
           DestroyGenerator = new MyObjectiveDestroy( // Var is used to call functions on that member
                new StringBuilder("Destroy the generators"),
                MyMissionID.SMALL_PIRATE_BASE_2_DESTROY_GENERATOR,
                new StringBuilder(""),
                null,
                this,
                new MyMissionID[] { },
                generators,
                false
            ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudGenerator };
            m_objectives.Add(DestroyGenerator); // pridani do seznamu submisi
            /*DestroyGenerator.MissionEntityIDs.Add((uint)EntityID.Generator_3);
            DestroyGenerator.MissionEntityIDs.Add((uint)EntityID.Generator_2);
            DestroyGenerator.MissionEntityIDs.Add((uint)EntityID.Generator);*/

            var ReturnToMothership = new MyObjective( // One member of that list - je to MySubmission takze cilem je doletet do checkpointu
               new StringBuilder("Return to your mothership"), // nazev submise
               MyMissionID.SMALL_PIRATE_BASE_2_KILL_GENERAL, // id submise
               new StringBuilder(""), // popis submise
               null,
               this,
               new MyMissionID[] { MyMissionID.SMALL_PIRATE_BASE_2_DESTROY_GENERATOR, }, // ID submisi ktere musi byt splneny - je to prazdne takze je to prvni submise
               new MyMissionLocation(baseSector, MyMissionLocation.MADELYN_HANGAR), // ID of dummy point of checkpoint
               radiusOverride: MyMissionLocation.MADELYN_HANGAR_RADIUS
           ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudMadelynsSapho }; // nastaveni save na checkpointu nebo ne
            m_objectives.Add(ReturnToMothership); // pridani do seznamu submisi

        
        }
        public MyTradeStationEACMission()
        {
            ID          = MyMissionID.TRADE_STATION_EAC;            /* ID must be added to MyMissions.cs */
            DebugName   = new StringBuilder("Trade station - EAC"); // Nazev mise
            Name        = MyTextsWrapperEnum.TRADE_STATION_EAC;
            Description = MyTextsWrapperEnum.EmptyDescription;

            MyMwcVector3Int baseSector = new MyMwcVector3Int(5944222, 0, -3414281);     // Story sector of the script

            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation); // Startmy point129158

            RequiredMissions           = new MyMissionID[] { };                         // mise ktere musi byt splneny pred prijetim teto mise
            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.TRADE_STATION_EAC_RETURN };
            RequiredActors             = new MyActorEnum[] { MyActorEnum.MARCUS, MyActorEnum.MADELYN, MyActorEnum.TARJA, MyActorEnum.VALENTIN };

            m_objectives = new List <MyObjective>(); // Creating of list of submissions
            // START DEFINICE SUBMISE



            m_casino = new MyObjective(                    // One member of that list - je to MySubmission takze cilem je doletet do checkpointu
                new StringBuilder("Get into the station"), // nazev submise
                MyMissionID.TRADE_STATION_EAC_CASINO,      // id submise
                new StringBuilder(""),                     // popis submise
                null,
                this,
                new MyMissionID[] { },                                         // ID submisi ktere musi byt splneny - je to prazdne takze je to prvni submise
                new MyMissionLocation(baseSector, (uint)EntityID.Casino_Dummy) // ID of dummy point of checkpoint
                )
            {
                SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudStation
            };                          // nastaveni save na checkpointu nebo ne
            m_objectives.Add(m_casino); // pridani do seznamu submisi



            var talkWith = new MyObjectiveDialog(
                (MyTextsWrapperEnum.TRADE_STATION_EAC_DIALOGUE_Name),
                MyMissionID.TRADE_STATION_EAC_DIALOGUE,
                (MyTextsWrapperEnum.TRADE_STATION_EAC_DIALOGUE_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.TRADE_STATION_EAC_CASINO }
                )
            {
                SaveOnSuccess = false
            };

            m_objectives.Add(talkWith);

            m_hospital = new MyObjectiveEnablePrefabs(
                new StringBuilder("Activate the central defense system"),
                MyMissionID.TRADE_STATION_EAC_HOSPITAL,
                new StringBuilder(""),
                null,
                this,
                new MyMissionID[] { MyMissionID.TRADE_STATION_EAC_DIALOGUE },
                null,
                new List <uint> {
                (uint)EntityID.PC_Red
            },
                new List <uint> {
                (uint)EntityID.Central_Defense_System
            }
                )
            {
                HudName = MyTextsWrapperEnum.HudSecurityHub
            };
            m_objectives.Add(m_hospital);


            /* m_hospital = new MyObjective( // One member of that list - je to MySubmission takze cilem je doletet do checkpointu
             *  new StringBuilder("Reset station central defense system"), // nazev submise
             *  MyMissionID.TRADE_STATION_EAC_HOSPITAL, // id submise
             *  new StringBuilder("Reset station central defense system"), // popis submise
             *  null,
             *  this,
             *  new MyMissionID[] { MyMissionID.TRADE_STATION_EAC_DIALOGUE }, // ID submisi ktere musi byt splneny - je to prazdne takze je to prvni submise
             *  new MyMissionLocation(baseSector, (uint)EntityID.PC_Red) // ID of dummy point of checkpoint
             *  ) { SaveOnSuccess = false }; // nastaveni save na checkpointu nebo ne
             * m_objectives.Add(m_hospital); // pridani do seznamu submisi*/

            var Return = new MyObjective(               // One member of that list - je to MySubmission takze cilem je doletet do checkpointu
                new StringBuilder("Return to Madelyn"), // nazev submise
                MyMissionID.TRADE_STATION_EAC_RETURN,   // id submise
                new StringBuilder(""),                  // popis submise
                null,
                this,
                new MyMissionID[] { MyMissionID.TRADE_STATION_EAC_HOSPITAL },        // ID submisi ktere musi byt splneny - je to prazdne takze je to prvni submise
                new MyMissionLocation(baseSector, MyMissionLocation.MADELYN_HANGAR), // ID of dummy point of checkpoint
                radiusOverride: MyMissionLocation.MADELYN_HANGAR_RADIUS
                )
            {
                SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudMadelynsSapho
            };                        // nastaveni save na checkpointu nebo ne

            m_objectives.Add(Return); // pridani do seznamu submisi

            m_hospital.OnMissionSuccess += DefenseON;
            m_casino.OnMissionSuccess   += AttackBegin;
        }
        public MyPirateBaseMission()
        {
            ID = MyMissionID.PIRATE_BASE; /* ID must be added to MyMissions.cs */
            DebugName = new StringBuilder("04-Pirate base");
            Name = MyTextsWrapperEnum.PIRATE_BASE;
            Description = MyTextsWrapperEnum.PIRATE_BASE_Description;
            Flags = MyMissionFlags.Story;
            
            MyMwcVector3Int baseSector = new MyMwcVector3Int(190921, 0, 2152692);

            /* sector where the mission is located */
            Location = new MyMissionLocation(baseSector, 228782);

            RequiredMissions = new MyMissionID[] { MyMissionID.BARTHS_MOON_CONVINCE };
            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.PIRATE_BASE_ALLY_ARRIVED };
            RequiredActors = new MyActorEnum[] { MyActorEnum.MARCUS, MyActorEnum.MADELYN };

            m_objectives = new List<MyObjective>();

            // == Objective 01 ==
            var travel = new MyObjective(
                (MyTextsWrapperEnum.PIRATE_BASE_TRAVEL_TO_BASE_Name),
                MyMissionID.PIRATE_BASE_TRAVEL_TO_BASE,
                (MyTextsWrapperEnum.PIRATE_BASE_TRAVEL_TO_BASE_Description),
                null,
                this,
                new MyMissionID[] {  },
                new MyMissionLocation(baseSector, (uint)EntityID.FIND_PIRATE_BASE_LOCATION)
            ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.Nothing };

            travel.Components.Add(new MySpawnpointWaves((uint)EntityID.AMBUSH_1_DETECTOR, 0,
                new List<uint[]> { new uint[] { (uint)EntityID.AMBUSH_1_SPAWNPOINT_A }, new uint[] { (uint)EntityID.AMBUSH_1_SPAWNPOINT_B } }));

            travel.Components.Add(new MySpawnpointWaves((uint)EntityID.AMBUSH_2_DETECTOR, 0,
                new List<uint[]> { new uint[] { (uint)EntityID.AMBUSH_2_SPAWNPOINT_A }, new uint[] { (uint)EntityID.AMBUSH_2_SPAWNPOINT_B } }));

            travel.Components.Add(new MySpawnpointWaves((uint)EntityID.AMBUSH_3_DETECTOR, 0,
                new List<uint[]> { new uint[] { (uint)EntityID.AMBUSH_3_SPAWNPOINT_A }, new uint[] { (uint)EntityID.AMBUSH_3_SPAWNPOINT_B } }));

            travel.Components.Add(new MySpawnpointWaves((uint)EntityID.AMBUSH_4_DETECTOR, 0,
                new List<uint[]> { new uint[] { (uint)EntityID.AMBUSH_4_SPAWNPOINT_A }, new uint[] { (uint)EntityID.AMBUSH_4_SPAWNPOINT_B } }));

            travel.Components.Add(new MySpawnpointWaves((uint)EntityID.AMBUSH_5_DETECTOR, 0,
                new List<uint[]> { new uint[] { (uint)EntityID.AMBUSH_5_SPAWNPOINT_A }, new uint[] { (uint)EntityID.AMBUSH_5_SPAWNPOINT_B } }));

            travel.Components.Add(new MySpawnpointWaves((uint)EntityID.AMBUSH_6_DETECTOR, 0,
                new List<uint[]> { new uint[] { (uint)EntityID.AMBUSH_6_SPAWNPOINT_A }, new uint[] { (uint)EntityID.AMBUSH_6_SPAWNPOINT_B } }));

            //travel.OnMissionSuccess += ArrivedToBase;
            travel.OnMissionLoaded += Travel_OnMissionLoaded;
            travel.OnMissionCleanUp += Travel_OnMissionUnload;
            m_objectives.Add(travel);

            // == Objective 02 ==
            var speakWithPirates = new MyMeetObjective(
                (MyTextsWrapperEnum.PIRATE_BASE_SPEAK_WITH_PIRATES_Name),
                MyMissionID.PIRATE_BASE_SPEAK_WITH_PIRATES,
                (MyTextsWrapperEnum.PIRATE_BASE_SPEAK_WITH_PIRATES_Description),
                this,
                new MyMissionID[] { MyMissionID.PIRATE_BASE_TRAVEL_TO_BASE },
                null, (uint)EntityID.PIRATE_LEADER, 300) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudPirateCaptain };
            speakWithPirates.OnMissionLoaded += SpeakWithPirates_OnMissionLoaded;
            m_objectives.Add(speakWithPirates);

            // == Objective 03 ==
            var listenToCaptain = new MyObjectiveDialog(
                MyMissionID.PIRATE_BASE_LISTEN_TO_CAPTAIN,
                null,
                this,
                new MyMissionID[] { MyMissionID.PIRATE_BASE_SPEAK_WITH_PIRATES },
                MyDialogueEnum.PIRATE_BASE_0600);
            listenToCaptain.OnMissionLoaded += ListenToCaptain_OnMissionLoaded;
            listenToCaptain.OnMissionCleanUp += ListenToCaptain_OnMissionUnload;
            m_objectives.Add(listenToCaptain);

            // == Objective 04 ==
            var prepareForDefense = new MyObjective(
                (MyTextsWrapperEnum.PIRATE_BASE_PREPARE_FOR_DEFENSE_Name),
                MyMissionID.PIRATE_BASE_PREPARE_FOR_DEFENSE,
                (MyTextsWrapperEnum.PIRATE_BASE_PREPARE_FOR_DEFENSE_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.PIRATE_BASE_LISTEN_TO_CAPTAIN },
                new MyMissionLocation(baseSector, (uint)EntityID.PREPARE_FOR_DEFENSE_LOCATION),
                startDialogId: MyDialogueEnum.PIRATE_BASE_0800) { SaveOnSuccess = true };
            prepareForDefense.Components.Add(new MySpawnpointWaves((uint)EntityID.PREPARE_DETECTOR, 0, new List<uint[]> { new uint[] { (uint)EntityID.PREPARE_SPAWNPOINT0, (uint)EntityID.PREPARE_SPAWNPOINT1, (uint)EntityID.PREPARE_SPAWNPOINT2 } }));
            prepareForDefense.OnMissionLoaded += PrepareForDefense_OnMissionLoaded;
            m_objectives.Add(prepareForDefense);

            // == Objective 05 ==
            m_getTurrets = new MyUseObjective(
                (MyTextsWrapperEnum.PIRATE_BASE_GET_TURRETS_Name),
                MyMissionID.PIRATE_BASE_GET_TURRETS,
                (MyTextsWrapperEnum.PIRATE_BASE_GET_TURRETS_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.PIRATE_BASE_PREPARE_FOR_DEFENSE },
                new MyMissionLocation(baseSector, (uint)EntityID.TURRET_PREFABS_DUMMY),
                MyTextsWrapperEnum.PressToTakeTurrets,
                MyTextsWrapperEnum.Turrets,
                MyTextsWrapperEnum.TransferInProgress,
                3000,
                objectiveType: MyUseObjectiveType.Taking) { SaveOnSuccess = true };
            m_getTurrets.OnMissionLoaded += GetTurrets_OnMissionLoaded;
            m_getTurrets.OnMissionSuccess += GetTurrets_OnMissionSuccess;
            m_objectives.Add(m_getTurrets);

            // == Objective 06 ==
            m_buildDefensesObjective = new MyTimedObjective(
                (MyTextsWrapperEnum.PIRATE_BASE_DEFENSE_SETUP_Name),
                MyMissionID.PIRATE_BASE_DEFENSE_SETUP,
                (MyTextsWrapperEnum.PIRATE_BASE_DEFENSE_SETUP_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.PIRATE_BASE_GET_TURRETS },
                new TimeSpan(0, 0, minutes: 5, seconds: 0)
                ) { SaveOnSuccess = true };
            
            m_buildDefensesObjective.OnMissionLoaded += BuildDefenses_OnMissionLoaded;
            m_buildDefensesObjective.OnMissionUpdate += BuildDefenses_OnMissionUpdate;
            m_buildDefensesObjective.OnMissionCleanUp += BuildDefenses_OnMissionUnloaded;
            m_buildDefensesObjective.OnMissionSuccess += BuildDefenses_OnMissionSuccess;
            m_objectives.Add(m_buildDefensesObjective);

            // == Objective 07 ==
            m_defendObjective = new MyTimedObjective(
                (MyTextsWrapperEnum.PIRATE_BASE_DEFEND_Name),
                MyMissionID.PIRATE_BASE_DEFEND,
                (MyTextsWrapperEnum.PIRATE_BASE_DEFEND_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.PIRATE_BASE_DEFENSE_SETUP },
                new TimeSpan(0, 0, minutes: 5, seconds: 0),
                startDialogId: MyDialogueEnum.PIRATE_BASE_0900
                ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudGenerator };
            
            m_defendObjective.OnMissionLoaded += Defend_OnMissionLoaded;
            m_defendObjective.OnMissionCleanUp += Defend_OnMissionUnloaded;
            m_defendObjective.OnMissionUpdate += Defend_OnMissionUpdate;
            m_defendObjective.OnMissionSuccess += Defend_OnMissionSuccess;

            m_defendObjective.Components.Add(new MyHeadshake((3*60)*1000, MyHeadshake.DefaultShaking));
            m_defendObjective.Components.Add(new MyHeadshake((6*60)*1000, MyHeadshake.DefaultShaking));
            m_defendObjective.Components.Add(new MyHeadshake((9*60)*1000, MyHeadshake.DefaultShaking));

            m_objectives.Add(m_defendObjective);

            // == Objective 08 ==
            m_allyArrivedObjective = new MyObjective(
                (MyTextsWrapperEnum.PIRATE_BASE_ALLY_ARRIVED_Name),
                MyMissionID.PIRATE_BASE_ALLY_ARRIVED,
                (MyTextsWrapperEnum.PIRATE_BASE_ALLY_ARRIVED_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.PIRATE_BASE_DEFEND },
                null,
                startDialogId: MyDialogueEnum.PIRATE_BASE_1100) { SaveOnSuccess = true };
            m_allyArrivedObjective.OnMissionLoaded += AllyArrived_OnMissionLoaded;
            m_allyArrivedObjective.OnMissionCleanUp += AllyArrived_OnMissionUnload;
            m_allyArrivedObjective.OnMissionUpdate += AllyArrived_OnMissionUpdate;
            m_allyArrivedObjective.OnMissionSuccess += AllyArrived_OnMissionSuccess;
            m_objectives.Add(m_allyArrivedObjective);

            /*
            var returnBackToMotherShip = new MyObjective(
                new StringBuilder("Return to your mothership"),
                MyMissionID.PIRATE_BASE_RETURN_BACK_TO_MOTHERSHIP,
                new StringBuilder(""),
                null,
                this,
                new MyMissionID[] { MyMissionID.PIRATE_BASE_ALLY_ARRIVED },
                new MyMissionLocation(baseSector, (uint)EntityID.MADELYN_DUMMY)
            ) { SaveOnSuccess = true };
            m_objectives.Add(returnBackToMotherShip);
             */
        }
        public MySolarfactoryEACMission()
        {
            m_ValidateIDlists = new List<List<uint>>();
            m_ValidateIDlists.Add(m_greenLights);
            m_ValidateIDlists.Add(m_redLights);


            ID = MyMissionID.SOLAR_PLANT_EAC; /* ID must be added to MyMissions.cs */
            DebugName = new StringBuilder("Solar factory - EAC"); // Nazev mise
            Name = MyTextsWrapperEnum.SOLAR_PLANT_EAC;
            Description = MyTextsWrapperEnum.EmptyDescription;

            MyMwcVector3Int baseSector = new MyMwcVector3Int(2700837, 0, -1774663); // Story sector of the script

            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation); // Startmy point

            RequiredMissions = new MyMissionID[] {  }; // mise ktere musi byt splneny pred prijetim teto mise
            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.SOLAR_PLANT_EAC_RETURN };
            RequiredActors = new MyActorEnum[] { MyActorEnum.MARCUS, MyActorEnum.MADELYN, MyActorEnum.TARJA, MyActorEnum.VALENTIN };

            m_objectives = new List<MyObjective>(); // Creating of list of submissions
            // START DEFINICE SUBMISE


            var DestroyTransformator = new MyObjectiveDestroy( // Var is used to call functions on that member
                 new StringBuilder("Destroy the transformer"),
                 MyMissionID.SOLAR_PLANT_EAC_DESTROY,
                 new StringBuilder(""),
                 null,
                 this,
                 new MyMissionID[] { },
                 Transformators,
                 false
             ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudTransformer };
            DestroyTransformator.OnMissionSuccess += new Missions.MissionHandler(DestroyedTransformator);
            m_objectives.Add(DestroyTransformator); // pridani do seznamu submisi            

            var ReturnToMothership = new MyObjective( // One member of that list - je to MyObjective takze cilem je doletet do checkpointu
               new StringBuilder("Return to your mothership"), // nazev submise
               MyMissionID.SOLAR_PLANT_EAC_RETURN, // id submise
               new StringBuilder(""), // popis submise
               null,
               this,
               new MyMissionID[] { MyMissionID.SOLAR_PLANT_EAC_DESTROY, }, // ID submisi ktere musi byt splneny - je to prazdne takze je to prvni submise
               new MyMissionLocation(baseSector, MyMissionLocation.MADELYN_HANGAR), // ID of dummy point of checkpoin
                //StartDialogId: MyDialogueEnum.SLAVERBASE_0900_NUKE_HACKED,
               radiusOverride: MyMissionLocation.MADELYN_HANGAR_RADIUS) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudMadelynsSapho }; // nastaveni save na checkpointu nebo ne
            m_objectives.Add(ReturnToMothership); //

        }
        public MyTwinTowersMission()
        {
            ID = MyMissionID.TWIN_TOWERS; /* ID must be added to MyMissions.cs */
            Name = MyTextsWrapperEnum.TWIN_TOWERS;
            Description = MyTextsWrapperEnum.TWIN_TOWERS_Description;
            DebugName = new StringBuilder("19-Doppelburg");
            Flags = MyMissionFlags.Story;

            MyMwcVector3Int baseSector = new MyMwcVector3Int(-2809328, 0, -4609055);

            /* sector where the mission is located */
            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation);

            RequiredMissions = new MyMissionID[] { MyMissionID.REICHSTAG_C };
            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.TWIN_TOWERS_MOTHERSHIP1_V2 };
            RequiredActors = new MyActorEnum[] { MyActorEnum.MADELYN, MyActorEnum.TARJA, MyActorEnum.VALENTIN  };
            MovePlayerToMadelynHangar = false;

            m_objectives = new List<MyObjective>();

            m_introTalk = new MyObjective(
                MyTextsWrapperEnum.Blank,
                MyMissionID.TWIN_TOWERS_INTRO,
                MyTextsWrapperEnum.Blank,
                null,
                this,
                new MyMissionID[] { },
                null
                ) { StartDialogId = MyDialogueEnum.TWIN_TOWERS_0100_INTRO };
            m_objectives.Add(m_introTalk);

            var multipleSabotage = new MyMultipleUseObjective(
                (MyTextsWrapperEnum.TWIN_TOWERS_SABOTAGE_Name),
                MyMissionID.TWIN_TOWERS_SABOTAGE,
                (MyTextsWrapperEnum.TWIN_TOWERS_SABOTAGE_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.TWIN_TOWERS_INTRO },
                MyTextsWrapperEnum.PressToPlaceExplosive,
                MyTextsWrapperEnum.Blank,
                MyTextsWrapperEnum.PlacingExplosives,
                1000,
                new List<uint> { (uint)EntityID.Explosives2, (uint)EntityID.Explosives3, (uint)EntityID.Explosives1 },
                MyUseObjectiveType.Putting
                ) { StartDialogId = MyDialogueEnum.TWIN_TOWERS_0200_PLACE_EXPLOSIVES };
            multipleSabotage.OnObjectUsedSucces += MultipleSabotageOnOnObjectUsedSucces;
            multipleSabotage.RequiredUncompletedMissions = new MyMissionID[] { MyMissionID.TWIN_TOWERS_RANDEVOUZ };
            multipleSabotage.Components.Add(
                new MyDetectorDialogue(
                    (uint) EntityID.Sabotage1,
                    MyDialogueEnum.TWIN_TOWERS_0300_player_reaching_the_main_electricity_supply));
            multipleSabotage.Components.Add(
                new MyDetectorDialogue(
                    (uint) EntityID.Sabotage2,
                    MyDialogueEnum.TWIN_TOWERS_0400_reaching_a_hangar_with_unmanned_enemy_small_ships));
            multipleSabotage.Components.Add(
                new MyDetectorDialogue(
                    (uint) EntityID.Sabotage3, MyDialogueEnum.TWIN_TOWERS_0500_reaching_electricity_distribution_HUB));
            m_objectives.Add(multipleSabotage);

            /*
            var sabotageSubmission04 = new MySabotageSubmission(
                new StringBuilder("Industrial section control room"),
                MyMissionID.TWIN_TOWERS_SABOTAGE04,
                new StringBuilder(""),
                null,
                this,
                new MyMissionID[] { },
                new MyMissionLocation(baseSector, (uint)EntityID.Sabotage4)
            );
            sabotageSubmission04.RequiredUncompletedMissions = new MyMissionID[] { MyMissionID.TWIN_TOWERS_RANDEVOUZ };
            sabotageSubmission04.OnMissionSuccess += Sabotage04SubmissionSuccess;
            m_objectives.Add(sabotageSubmission04);
            */
            var randevouzSubmission = new MyObjective(
                (MyTextsWrapperEnum.TWIN_TOWERS_RANDEVOUZ_Name),
                MyMissionID.TWIN_TOWERS_RANDEVOUZ,
                (MyTextsWrapperEnum.TWIN_TOWERS_RANDEVOUZ_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.TWIN_TOWERS_SABOTAGE },
                new MyMissionLocation(baseSector, (uint)EntityID.Objective_randevouz)
            )
                {
                    SaveOnSuccess = true,
                    StartDialogId = MyDialogueEnum.TWIN_TOWERS_0600_after_all_the_sabotages_are_done,
                    HudName = MyTextsWrapperEnum.HudMeetingPoint
                };
            randevouzSubmission.OnMissionLoaded += RandevouzSubmissionLoaded;
            randevouzSubmission.OnMissionSuccess += RandevouzSubmissionSuccess;
            m_objectives.Add(randevouzSubmission);

            m_assaultSubmission = new MyObjectiveDestroy(
                (MyTextsWrapperEnum.TWIN_TOWERS_ASSAULT_Name),
                MyMissionID.TWIN_TOWERS_ASSAULT,
                (MyTextsWrapperEnum.TWIN_TOWERS_ASSAULT_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.TWIN_TOWERS_RANDEVOUZ },
                null,
                new List<uint> { (uint) EntityID.Spawnpoint_Command }
                )
                {
                    SaveOnSuccess = true,
                    StartDialogId = MyDialogueEnum.TWIN_TOWERS_0700_Meeting_point,
                    SuccessDialogId = MyDialogueEnum.TWIN_TOWERS_0800_command_center_cleared
                };
            m_assaultSubmission.OnMissionSuccess += AssaultSubmissionSuccess;
            m_assaultSubmission.OnMissionLoaded += AssaultSubmissionLoaded;
            m_objectives.Add(m_assaultSubmission);

            m_hackerSubmission = new MyTimedObjective(
                (MyTextsWrapperEnum.TWIN_TOWERS_HACKING_Name),
                MyMissionID.TWIN_TOWERS_HACKING,
                (MyTextsWrapperEnum.TWIN_TOWERS_HACKING_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.TWIN_TOWERS_ASSAULT },
                new TimeSpan(0, 3, 0),
                false
                )
                {
                    SaveOnSuccess = true,
                    StartDialogId = MyDialogueEnum.TWIN_TOWERS_0900_hacker_reaches_computer,
                    SuccessDialogId = MyDialogueEnum.TWIN_TOWERS_1100_hacking_gets_jammed,
                    HudName = MyTextsWrapperEnum.HudHacker
                };
            m_hackerSubmission.OnMissionSuccess += HackerSubmissionSuccess;
            m_hackerSubmission.OnMissionLoaded += HackerSubmissionLoaded;
            m_hackerSubmission.NotificationText = MyTextsWrapperEnum.CountdownHacker;
            m_hackerSubmission.Components.Add(new MyTimedDialogue(TimeSpan.FromSeconds(90), MyDialogueEnum.TWIN_TOWERS_1000_through_the_fight));
            m_objectives.Add(m_hackerSubmission);

            m_jammerSubmission = new MyObjectiveDestroy(
                (MyTextsWrapperEnum.TWIN_TOWERS_JAMMER_Name),
                MyMissionID.TWIN_TOWERS_JAMMER,
                (MyTextsWrapperEnum.TWIN_TOWERS_JAMMER_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.TWIN_TOWERS_HACKING },
                null,
                new List<uint> { (uint) EntityID.Spawnpoint_Jammer }
                )
                {
                    SaveOnSuccess = true,
                    SuccessDialogId = MyDialogueEnum.TWIN_TOWERS_1200_killing_jammer,
                    HudName = MyTextsWrapperEnum.HudJammer
                };
            m_jammerSubmission.OnMissionSuccess += JammerSubmissionSuccess;
            m_jammerSubmission.OnMissionLoaded += JammerSubmissionLoaded;
            m_objectives.Add(m_jammerSubmission);

            m_hackerSubmission2 = new MyTimedObjective(
                (MyTextsWrapperEnum.TWIN_TOWERS_HACKING_CONTINUE_Name),
                MyMissionID.TWIN_TOWERS_HACKING_CONTINUE,
                (MyTextsWrapperEnum.TWIN_TOWERS_HACKING_CONTINUE_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.TWIN_TOWERS_JAMMER },
                new TimeSpan(0, 1, 7)
                )
                {
                    SaveOnSuccess = true,
                    SuccessDialogId = MyDialogueEnum.TWIN_TOWERS_1300_hacking_done,
                    HudName = MyTextsWrapperEnum.HudHacker
                };
            m_hackerSubmission2.OnMissionSuccess += Hacker2SubmissionSuccess;
            m_hackerSubmission2.OnMissionLoaded += Hacker2SubmissionLoaded;
            m_hackerSubmission2.NotificationText = MyTextsWrapperEnum.CountdownHacker;
            m_objectives.Add(m_hackerSubmission2);

            var railgun01Submission = new MyObjectiveDestroy(
                (MyTextsWrapperEnum.TWIN_TOWERS_RAILGUN1_Name),
                MyMissionID.TWIN_TOWERS_RAILGUN1,
                (MyTextsWrapperEnum.TWIN_TOWERS_RAILGUN1_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.TWIN_TOWERS_HACKING_CONTINUE },
                new List<uint>
                    { (uint) EntityID.Objective_Railgun1_Controls_01, (uint) EntityID.Objective_Railgun1_Controls_02 }
                )
                {
                    SuccessDialogId = MyDialogueEnum.TWIN_TOWERS_1400_clearing_first_control_room
                };
            railgun01Submission.OnMissionSuccess += Railgun01SubmissionSuccess;
            m_objectives.Add(railgun01Submission);

            var railgun02Submission = new MyObjectiveDestroy(
                (MyTextsWrapperEnum.TWIN_TOWERS_RAILGUN2_Name),
                MyMissionID.TWIN_TOWERS_RAILGUN2,
                (MyTextsWrapperEnum.TWIN_TOWERS_RAILGUN2_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.TWIN_TOWERS_RAILGUN1 },
                new List<uint>
                    {
                        (uint) EntityID.Objective_Railgun2_Controls_01,
                        (uint) EntityID.Objective_Railgun2_Controls_02,
                        (uint) EntityID.Objective_Railgun2_Controls_03,
                        (uint) EntityID.Objective_Railgun2_Controls_04
                    }
                )
                {
                    SaveOnSuccess = true
                };
            railgun02Submission.OnMissionLoaded += Railgun02SubmissionLoaded;
            railgun02Submission.OnMissionSuccess += Railgun02SubmissionSuccess;
            m_objectives.Add(railgun02Submission);

            var rightBaseGoToSubmission = new MyObjective(
                (MyTextsWrapperEnum.TWIN_TOWERS_GOTO_RIGHT_Name),
                MyMissionID.TWIN_TOWERS_GOTO_RIGHT,
                (MyTextsWrapperEnum.TWIN_TOWERS_GOTO_RIGHT_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.TWIN_TOWERS_RAILGUN2 },
                new MyMissionLocation(baseSector, (uint) EntityID.Objective_RightBase)
                )
                {
                    StartDialogId = MyDialogueEnum.TWIN_TOWERS_1500_clearing_second_control_room,
                    HudName = MyTextsWrapperEnum.HudTowerB
                };
            rightBaseGoToSubmission.OnMissionSuccess += RightBaseGoToSubmissionSuccess;
            m_objectives.Add(rightBaseGoToSubmission);

            var rightBaseGeneratorSubmission = new MyObjectiveDestroy(
                (MyTextsWrapperEnum.TWIN_TOWERS_GENERATOR_Name),
                MyMissionID.TWIN_TOWERS_GENERATOR,
                (MyTextsWrapperEnum.TWIN_TOWERS_GENERATOR_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.TWIN_TOWERS_GOTO_RIGHT },
                new List<uint> { (uint) EntityID.Objective_Generator_Pipe1, (uint) EntityID.Objective_Generator_Pipe2 }
                )
                {
                    StartDialogId = MyDialogueEnum.TWIN_TOWERS_1600_in_tower_B,
                    HudName = MyTextsWrapperEnum.HudGenerator
                };
            rightBaseGeneratorSubmission.SaveOnSuccess = true;
            rightBaseGeneratorSubmission.OnMissionLoaded += RightBaseGeneratorSubmissionLoaded;
            rightBaseGeneratorSubmission.OnMissionSuccess += RightBaseGeneratorSubmissionSuccess;
            m_objectives.Add(rightBaseGeneratorSubmission);

            m_rightBaseCommandSubmission = new MyObjective(
                (MyTextsWrapperEnum.TWIN_TOWERS_COMMAND_Name),
                MyMissionID.TWIN_TOWERS_COMMAND,
                (MyTextsWrapperEnum.TWIN_TOWERS_COMMAND_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.TWIN_TOWERS_GENERATOR },
                null,
                new List<uint> { (uint) EntityID.Objective_Command_HUB }
                )
                {
                    StartDialogId = MyDialogueEnum.TWIN_TOWERS_1700_reactor_shut_down,
                    SuccessDialogId = MyDialogueEnum.TWIN_TOWERS_1800_computer_hacked,
                    HudName = MyTextsWrapperEnum.HudCommandCenter
                };
            m_rightBaseCommandSubmission.OnMissionLoaded += RightBaseCommandSubmissionLoaded;
            m_rightBaseCommandSubmission.OnMissionSuccess += RightBaseCommandSubmissionSuccess;
            m_objectives.Add(m_rightBaseCommandSubmission);

            m_waitSubmission = new MyObjective(
                (MyTextsWrapperEnum.TWIN_TOWERS_WAIT_Name),
                MyMissionID.TWIN_TOWERS_WAIT,
                (MyTextsWrapperEnum.TWIN_TOWERS_WAIT_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.TWIN_TOWERS_COMMAND },
                null
                )
                {
                    SuccessDialogId = MyDialogueEnum.TWIN_TOWERS_1900_motherships_arrived
                };
            m_waitSubmission.SaveOnSuccess = true;
            m_waitSubmission.OnMissionLoaded += WaitSubmissionLoaded;
            m_waitSubmission.OnMissionSuccess += WaitSubmissionSuccess;
            m_objectives.Add(m_waitSubmission);

            m_mothership1Submission = new MyObjectiveDestroy(
                (MyTextsWrapperEnum.TWIN_TOWERS_MOTHERSHIP1_Name),
                MyMissionID.TWIN_TOWERS_MOTHERSHIP1,
                (MyTextsWrapperEnum.TWIN_TOWERS_MOTHERSHIP1_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.TWIN_TOWERS_WAIT },
                new List<uint> { (uint)EntityID.Objective_Zeppelin1_Generator }
                )
                {
                    HudName = MyTextsWrapperEnum.HudGenerator
                };
            m_mothership1Submission.SaveOnSuccess = true;
            m_mothership1Submission.Components.Add(new MySpawnpointWaves((uint)EntityID.Detector_Zeppelin_WW1_Hounds, 0, (uint)EntityID.Spawnpoint_Zeppelin_WW1_03_Hounds));
            m_mothership1Submission.OnMissionLoaded += Mothership1SubmissionLoaded;
            m_mothership1Submission.OnMissionSuccess += Mothership1SubmissionSuccess;
            m_mothership1Submission.Components.Add(new MySpawnpointLimiter(m_WWZeppelinSpawns, 10));
            m_objectives.Add(m_mothership1Submission);

            m_mothership1Submission2 = new MyObjectiveDestroy(
                (MyTextsWrapperEnum.TWIN_TOWERS_MOTHERSHIP1_V2_Name),
                MyMissionID.TWIN_TOWERS_MOTHERSHIP1_V2,
                (MyTextsWrapperEnum.TWIN_TOWERS_MOTHERSHIP1_V2_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.TWIN_TOWERS_MOTHERSHIP1 },
                new List<uint>
                    { (uint) EntityID.Objective_Zeppelin1_Battery1, (uint) EntityID.Objective_Zeppelin1_Battery2 }
                )
                {
                    StartDialogId = MyDialogueEnum.TWIN_TOWERS_2000_destroying_the_generator,
                    SuccessDialogId = MyDialogueEnum.TWIN_TOWERS_2100_destroying_batteries,
                    HudName = MyTextsWrapperEnum.HudBatteries
                };
            m_mothership1Submission2.Components.Add(new MySpawnpointWaves((uint)EntityID.Detector_Zeppelin_WW1_Hounds, 0, (uint)EntityID.Spawnpoint_Zeppelin_WW1_03_Hounds));
            m_mothership1Submission2.OnMissionLoaded += Mothership1Submission2Loaded;
            m_mothership1Submission2.OnMissionSuccess += Mothership1Submission2Success;
            m_mothership1Submission2.Components.Add(new MySpawnpointLimiter(m_WWZeppelinSpawns, 10));
            m_objectives.Add(m_mothership1Submission2);
            /*
            var mothership2Submission = new MyObjective(
                new StringBuilder("Destroy the second mothership"),
                MyMissionID.TWIN_TOWERS_MOTHERSHIP2,
                new StringBuilder(""),
                null,
                this,
                new MyMissionID[] { MyMissionID.TWIN_TOWERS_MOTHERSHIP1_V2 },
                new MyMissionLocation(baseSector, (uint)EntityID.Objective_Zeppelin2_Command)
            );
            mothership2Submission.OnMissionLoaded += Mothership2SubmissionLoaded;
            mothership2Submission.OnMissionSuccess += Mothership2SubmissionSuccess;
            m_objectives.Add(mothership2Submission);
            */  /*
            var returnSubmission = new MyObjective(
                new StringBuilder("Return to Madelyn"),
                MyMissionID.TWIN_TOWERS_GOTO_MADELYN,
                new StringBuilder(""),
                null,
                this,
                new MyMissionID[] { MyMissionID.TWIN_TOWERS_MOTHERSHIP1_V2 },
                new MyMissionLocation(baseSector, MyMissionLocation.MADELYN_HANGAR)
            );
            m_objectives.Add(returnSubmission);*/
        }
        public MyEACTransmitterMission()
        {
            ID = MyMissionID.EAC_TRANSMITTER;
            DebugName = new StringBuilder("21-EAC transmitter");
            Name = MyTextsWrapperEnum.EAC_TRANSMITTER;
            Description = MyTextsWrapperEnum.EAC_TRANSMITTER_Description; // "Set all 3 satellites to your needs.\n"
            Flags = MyMissionFlags.Story;

            MyMwcVector3Int baseSector = new MyMwcVector3Int(3818505, 0, -4273800);
            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation);



            RequiredMissions = new MyMissionID[] { MyMissionID.EAC_PRISON };
            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.EAC_TRANSMITTER_MEETMS };
            RequiredActors = new MyActorEnum[] { MyActorEnum.MARCUS, MyActorEnum.MADELYN, MyActorEnum.TARJA, MyActorEnum.VALENTIN };
            
            m_objectives = new List<MyObjective>();

            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeEnteringCargoWithRavens, 0, (uint)EntityID.SpawnpointAtInnerCargo));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeEnteringCargoWithRavens, 0, (uint)EntityID.SpawnpointAtOuterControlRoom1));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeEnteringControlRoomFromOutside, 0, (uint)EntityID.SpawnpointAtControlRoom1));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeEnteringControlRoomFromOutside, 0, (uint)EntityID.SpawnpointAtControlRoom2));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeEnteringSatelitteA, 0, (uint)EntityID.SpawnpointAtSatelitteA));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorWhenEscapingSatAThruDestroyedPanel, 0, (uint)EntityID.SpawnpointAtOuterSatelitteA));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorWhenEscapingSatAThruDestroyedPanel, 0, (uint)EntityID.SpawnpointAtControlRoom3));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorWhenEscapingSatAThruDestroyedPanel, 0, (uint)EntityID.SpawnpointAtControlRoom4));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeAgregat1, 0, (uint)EntityID.SpawnpointAtAgregat1));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeAgregat2, 0, (uint)EntityID.SpawnpointAtAgregat2));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeAgregat3, 0, (uint)EntityID.SpawnpointAtAgregat3));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeHackingSatelitteBandC, 0, (uint)EntityID.SpawnpointAtSatelitteB));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeHackingSatelitteBandC, 0, (uint)EntityID.SpawnpointAtSatelitteC));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeStartingTransmission, 0, (uint)EntityID.SpawnpointAtControlRoom5));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeStartingTransmission, 0, (uint)EntityID.SpawnpointAtControlRoom6));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeOpeningDoorToArm, 0, (uint)EntityID.SpawnpointAtArmEntrance));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeEnteringCargoThruArm, 0, (uint)EntityID.SpawnpointAtCargoInnerEntrance));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeFixingGenerator, 0, (uint)EntityID.SpawnpointAtGenerator));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeTurnBackOnSolars, 0, (uint)EntityID.SpawnpointAtSolarStarting));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeTurnBackOnSolars, 0, (uint)EntityID.SpawnpointAtControlRoom7));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeTurnBackOnSolars, 0, (uint)EntityID.SpawnpointAtControlRoom8));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeTurnBackOnSolars, 0, (uint)EntityID.SpawnpointAtOuterControlRoom2));

            var openCargoDoor = new MyUseObjective(
                (MyTextsWrapperEnum.EAC_TRANSMITTER_OPEN_CARGO_DOOR),
                MyMissionID.EAC_TRANSMITTER_OPEN_CARGO,
                (MyTextsWrapperEnum.EAC_TRANSMITTER_OPEN_CARGO_DOOR_Description),
                null,
                this,
                new MyMissionID[] { },
                new MyMissionLocation(baseSector, (uint)EntityID.DummyCargoBomb),
                MyTextsWrapperEnum.PressToPlaceBomb,
                MyTextsWrapperEnum.Blank,
                MyTextsWrapperEnum.PlacingBomb,
                1000,
                startDialogId: MyDialogueEnum.EAC_TRANSMITTER_0100
            ) { SaveOnSuccess = true };
            m_objectives.Add(openCargoDoor);
            openCargoDoor.OnMissionLoaded += new MissionHandler(openCargoDoor_OnMissionLoaded);
            openCargoDoor.OnMissionSuccess += new MissionHandler(openCargoDoor_OnMissionSuccess);


            var enterControlRoom = new MyObjective(
                (MyTextsWrapperEnum.EAC_TRANSMITTER_CENTRAL_ROOM),
                MyMissionID.EAC_TRANSMITTER_CENTRAL_ROOM,
                (MyTextsWrapperEnum.EAC_TRANSMITTER_CENTRAL_ROOM_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.EAC_TRANSMITTER_OPEN_CARGO },
                new MyMissionLocation(baseSector, (uint)EntityID.DummyControlRoom),
                startDialogId: MyDialogueEnum.EAC_TRANSMITTER_0200
            ) { HudName = MyTextsWrapperEnum.HudControlRoom,
               SaveOnSuccess = true };
            enterControlRoom.OnMissionLoaded += new MissionHandler(enterControlRoom_OnMissionLoaded);
            enterControlRoom.OnMissionSuccess += new MissionHandler(enterControlRoom_OnMissionSuccess);
            m_objectives.Add(enterControlRoom);


            var unlockWayToSatelliteA = new MyObjectiveEnablePrefabs(
                (MyTextsWrapperEnum.EAC_TRANSMITTER_UNLOCK_WAY_TO_SATELLITES),
                MyMissionID.EAC_TRANSMITTER_UNLOCK_WAY_TO_SATELLITE_A,
                (MyTextsWrapperEnum.EAC_TRANSMITTER_UNLOCK_WAY_TO_SATELLITES_Descrption),
                null,
                this,
                new MyMissionID[] { MyMissionID.EAC_TRANSMITTER_CENTRAL_ROOM },
                null,
                new List<uint> { (int)EntityID.HubA },
                new List<uint> { (int)EntityID.DoorHubA }
            ) { HudName = MyTextsWrapperEnum.HudHub,
                SaveOnSuccess = true };
            m_objectives.Add(unlockWayToSatelliteA);

            var unlockWayToSatelliteB = new MyObjectiveEnablePrefabs(
                (MyTextsWrapperEnum.EAC_TRANSMITTER_UNLOCK_WAY_TO_SATELLITES),
                MyMissionID.EAC_TRANSMITTER_UNLOCK_WAY_TO_SATELLITE_B,
                (MyTextsWrapperEnum.EAC_TRANSMITTER_UNLOCK_WAY_TO_SATELLITES_Descrption),
                null,
                this,
                new MyMissionID[] { MyMissionID.EAC_TRANSMITTER_UNLOCK_WAY_TO_SATELLITE_A },
                null,
                new List<uint> { (int)EntityID.HubB },
                new List<uint> { (int)EntityID.DoorHubB1, (int)EntityID.DoorHubB2, (int)EntityID.DoorHubB3, (int)EntityID.DoorHubB4}
            ) { HudName = MyTextsWrapperEnum.HudHub,
                SaveOnSuccess = true };
            m_objectives.Add(unlockWayToSatelliteB);

            var unlockWayToSatelliteC = new MyObjectiveEnablePrefabs(
                (MyTextsWrapperEnum.EAC_TRANSMITTER_UNLOCK_WAY_TO_SATELLITES),
                MyMissionID.EAC_TRANSMITTER_UNLOCK_WAY_TO_SATELLITE_C,
                (MyTextsWrapperEnum.EAC_TRANSMITTER_UNLOCK_WAY_TO_SATELLITES_Descrption),
                null,
                this,
                new MyMissionID[] { MyMissionID.EAC_TRANSMITTER_UNLOCK_WAY_TO_SATELLITE_B },
                null,
                new List<uint> { (int)EntityID.HubC },
                new List<uint> { (int)EntityID.DoorHubC1, (int)EntityID.DoorHubC2, (int)EntityID.DoorHubC3, (int)EntityID.DoorHubC4}
            ) { HudName = MyTextsWrapperEnum.HudHub,
                SaveOnSuccess = true };
            m_objectives.Add(unlockWayToSatelliteC);


            var hackSatelliteA = new MyUseObjective(
                (MyTextsWrapperEnum.EAC_TRANSMITTER_HACK_SATELLITE_A),
                MyMissionID.EAC_TRANSMITTER_HACK_SATELLITE_A,
                (MyTextsWrapperEnum.EAC_TRANSMITTER_HACK_SATELLITE_A_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.EAC_TRANSMITTER_UNLOCK_WAY_TO_SATELLITE_C },
                new MyMissionLocation(baseSector, (uint)EntityID.DummySatelliteA),
                MyTextsWrapperEnum.PressToHack,
                MyTextsWrapperEnum.HackingProgress,
                MyTextsWrapperEnum.Hacking,
                2000,
                startDialogId: MyDialogueEnum.EAC_TRANSMITTER_0300
            );
            m_objectives.Add(hackSatelliteA);


            var autodestructEscape = new MyObjectiveDestroy(
                (MyTextsWrapperEnum.EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_ESCAPE),
                MyMissionID.EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_ESCAPE,
                (MyTextsWrapperEnum.EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_ESCAPE_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.EAC_TRANSMITTER_HACK_SATELLITE_A },
                new List<uint> { (uint)EntityID.PanelAutodestruct },
                startDialogID: MyDialogueEnum.EAC_TRANSMITTER_0400
            ) { HudName = MyTextsWrapperEnum.HudPanel};
            autodestructEscape.OnMissionLoaded += new MissionHandler(autodestructEscape_OnMissionLoaded);
            m_objectives.Add(autodestructEscape);


            var autodestructHack = new MyUseObjective(
                (MyTextsWrapperEnum.EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_HACK),
                MyMissionID.EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_HACK,
                (MyTextsWrapperEnum.EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_HACK_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_ESCAPE },
                new MyMissionLocation(baseSector, (uint)EntityID.DummyAutodestructHack),
                MyTextsWrapperEnum.PressToHack,
                MyTextsWrapperEnum.Hacking,
                MyTextsWrapperEnum.HackingProgress,
                2000
            );
            m_objectives.Add(autodestructHack);

            //Escape by destroying panel upon your head
            var autodestructDestroy = new MyObjectiveDestroy(
                (MyTextsWrapperEnum.EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_DESTROY),
                MyMissionID.EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_DESTROY,
                (MyTextsWrapperEnum.EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_DESTROY_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_HACK },
                new List<uint> { (uint)EntityID.PrefabAutodestruct1, (uint)EntityID.PrefabAutodestruct2 },
                startDialogID: MyDialogueEnum.EAC_TRANSMITTER_0500
            ) { SaveOnSuccess = true };
            autodestructDestroy.OnMissionLoaded += new MissionHandler(autodestructDestroy_OnMissionLoaded);
            autodestructDestroy.OnMissionSuccess += new MissionHandler(autodestructDestroy_OnMissionSuccess);
            m_objectives.Add(autodestructDestroy);

            var autodestructHelp = new MyObjectiveDestroy(
                (MyTextsWrapperEnum.EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_HELP),
                MyMissionID.EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_HELP,
                (MyTextsWrapperEnum.EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_HELP_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_DESTROY },
                null,
                new List<uint> { (uint)EntityID.SpawnAutodestruct },
                true,
                true,
                startDialogID: MyDialogueEnum.EAC_TRANSMITTER_0600,
                successDialogID: MyDialogueEnum.EAC_TRANSMITTER_0700
            ) { SaveOnSuccess = true };
            autodestructHelp.OnMissionSuccess += new MissionHandler(autodestructHelp_OnMissionSuccess);
            m_objectives.Add(autodestructHelp);


            var hackSatelliteB = new MyUseObjective(
                (MyTextsWrapperEnum.EAC_TRANSMITTER_HACK_SATELLITE_B),
                MyMissionID.EAC_TRANSMITTER_HACK_SATELLITE_B,
                (MyTextsWrapperEnum.EAC_TRANSMITTER_HACK_SATELLITE_B_Descrption),
                null,
                this,
                new MyMissionID[] { MyMissionID.EAC_TRANSMITTER_BLOCK_AUTODESTRUCT_HELP },
                new MyMissionLocation(baseSector, (uint)EntityID.DummySatelliteB),
                MyTextsWrapperEnum.PressToHack,
                MyTextsWrapperEnum.HackingProgress,
                MyTextsWrapperEnum.Hacking,
                2000
            ) { SaveOnSuccess = true };
            m_objectives.Add(hackSatelliteB);


            var hackSatelliteC = new MyUseObjective(
                (MyTextsWrapperEnum.EAC_TRANSMITTER_HACK_SATELLITE_C),
                MyMissionID.EAC_TRANSMITTER_HACK_SATELLITE_C,
                (MyTextsWrapperEnum.EAC_TRANSMITTER_HACK_SATELLITE_C_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.EAC_TRANSMITTER_HACK_SATELLITE_B },
                new MyMissionLocation(baseSector, (uint)EntityID.DummySatelliteC),
                MyTextsWrapperEnum.PressToHack,
                MyTextsWrapperEnum.HackingProgress,
                MyTextsWrapperEnum.Hacking,
                2000,
                startDialogId: MyDialogueEnum.EAC_TRANSMITTER_0800
            ) { SaveOnSuccess = true };
            m_objectives.Add(hackSatelliteC);

            var startTransmittion = new MyUseObjective(
                (MyTextsWrapperEnum.EAC_TRANSMITTER_START_TRANSMISSION),
                MyMissionID.EAC_TRANSMITTER_START_TRANSMISSION,
                (MyTextsWrapperEnum.EAC_TRANSMITTER_START_TRANSMISSION_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.EAC_TRANSMITTER_HACK_SATELLITE_C },
                new MyMissionLocation(baseSector, (uint)EntityID.DummySatelliteD),
                MyTextsWrapperEnum.PressToStartTransmission,
                MyTextsWrapperEnum.StartingTransmission,
                MyTextsWrapperEnum.Transmission,
                1000,
                startDialogId: MyDialogueEnum.EAC_TRANSMITTER_0900
            );
            m_objectives.Add(startTransmittion);

            var openSolarArm = new MyObjectiveEnablePrefabs(
                (MyTextsWrapperEnum.EAC_TRANSMITTER_OPEN_SOLAR_ARM),
                MyMissionID.EAC_TRANSMITTER_OPEN_SOLAR_ARM,
                (MyTextsWrapperEnum.EAC_TRANSMITTER_OPEN_SOLAR_ARM_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.EAC_TRANSMITTER_START_TRANSMISSION },
                null,
                new List<uint> { (int)EntityID.HubSolarArm },
                new List<uint> { (int)EntityID.DoorSolarArm },
                startDialogId: MyDialogueEnum.EAC_TRANSMITTER_1000
            ) { HudName = MyTextsWrapperEnum.HudHub,
                SaveOnSuccess = true };
            openSolarArm.OnMissionLoaded += new MissionHandler(openSolarArm_OnMissionLoaded);
            m_objectives.Add(openSolarArm);



            var findRepairKit = new MyUseObjective(
                  (MyTextsWrapperEnum.EAC_TRANSMITTER_FIND_REPAIR),
                  MyMissionID.EAC_TRANSMITTER_FIND_REPAIR,
                  (MyTextsWrapperEnum.EAC_TRANSMITTER_FIND_REPAIR_Description),
                  null,
                  this,
                  new MyMissionID[] { MyMissionID.EAC_TRANSMITTER_OPEN_SOLAR_ARM },
                  new MyMissionLocation(baseSector, (uint)EntityID.CargoRepair),
                  MyTextsWrapperEnum.PressToTakeCargo,
                  MyTextsWrapperEnum.TakeAll,
                  MyTextsWrapperEnum.TakingInProgress,
                  2000,
                  radiusOverride: 50
              ) { HudName = MyTextsWrapperEnum.HudGeneratorRepairKit,
                  SaveOnSuccess = true };
            findRepairKit.OnMissionLoaded += new MissionHandler(findRepairKit_OnMissionLoaded);
            findRepairKit.OnMissionSuccess += new MissionHandler(findRepairKit_OnMissionSuccess);
            m_objectives.Add(findRepairKit);


            var fixGenerator = new MyUseObjective(
                  (MyTextsWrapperEnum.EAC_TRANSMITTER_FIX_GENERATOR),
                  MyMissionID.EAC_TRANSMITTER_FIX_GENERATOR,
                  (MyTextsWrapperEnum.EAC_TRANSMITTER_FIX_GENERATOR_Descrpition),
                  null,
                  this,
                  new MyMissionID[] { MyMissionID.EAC_TRANSMITTER_FIND_REPAIR },
                  new MyMissionLocation(baseSector, (uint)EntityID.DummyGeneratorFix),
                  MyTextsWrapperEnum.PressToStartGenerator,
                  MyTextsWrapperEnum.StartingProgress,
                  MyTextsWrapperEnum.StartingProgress,
                  2000,
                  startDialogId: MyDialogueEnum.EAC_TRANSMITTER_1100
              ) { SaveOnSuccess = true };
            fixGenerator.OnMissionSuccess += new MissionHandler(fixGenerator_OnMissionSuccess);
            m_objectives.Add(fixGenerator);

            var activateSolarpanels = new MyUseObjective(
                  (MyTextsWrapperEnum.EAC_TRANSMITTER_ACTIVATE_SOLARPANELS),
                  MyMissionID.EAC_TRANSMITTER_ACTIVATE_SOLARPANELS,
                  (MyTextsWrapperEnum.EAC_TRANSMITTER_ACTIVATE_SOLARPANELS_Description),
                  null,
                  this,
                  new MyMissionID[] { MyMissionID.EAC_TRANSMITTER_FIX_GENERATOR },
                  new MyMissionLocation(baseSector, (uint)EntityID.DummySolarCircuit),
                  MyTextsWrapperEnum.PressToRedirectEnergy,
                  MyTextsWrapperEnum.RedirectEnergy,
                  MyTextsWrapperEnum.RedirectionInProgress,
                  2000,
                  startDialogId: MyDialogueEnum.EAC_TRANSMITTER_1200
              );
            m_objectives.Add(activateSolarpanels);

            var restartTransmition = new MyUseObjective(
                  (MyTextsWrapperEnum.EAC_TRANSMITTER_RESTART_TRANSMISSION),
                  MyMissionID.EAC_TRANSMITTER_RESTART_TRANSMISSION,
                  (MyTextsWrapperEnum.EAC_TRANSMITTER_RESTART_TRANSMISSION_Description),
                  null,
                  this,
                  new MyMissionID[] { MyMissionID.EAC_TRANSMITTER_ACTIVATE_SOLARPANELS },
                  new MyMissionLocation(baseSector, (uint)EntityID.DummySatelliteD),
                  MyTextsWrapperEnum.PressToStartTransmission,
                  MyTextsWrapperEnum.StartingTransmission,
                  MyTextsWrapperEnum.Transmission,
                  2000,
                  startDialogId: MyDialogueEnum.EAC_TRANSMITTER_1300
              ) { SaveOnSuccess = true };
            m_objectives.Add(restartTransmition);


            var meetms = new MyObjective(
                  (MyTextsWrapperEnum.EAC_TRANSMITTER_MEETMS),
                  MyMissionID.EAC_TRANSMITTER_MEETMS,
                  (MyTextsWrapperEnum.EAC_TRANSMITTER_MEETMS_Description),
                  null,
                  this,
                  new MyMissionID[] { MyMissionID.EAC_TRANSMITTER_RESTART_TRANSMISSION },
                  new MyMissionLocation(baseSector, MyMissionLocation.MADELYN_HANGAR),
                  startDialogId: MyDialogueEnum.EAC_TRANSMITTER_1400,
                  radiusOverride: MyMissionLocation.MADELYN_HANGAR_RADIUS
              ) { HudName = MyTextsWrapperEnum.HudMadelynsSapho };
            m_objectives.Add(meetms);


  
        }
        public MyResearchVesselMission()
        {
            ID = MyMissionID.RESEARCH_VESSEL;
            DebugName = new StringBuilder("12-Eurydice/Osaka");
            Name = MyTextsWrapperEnum.RESEARCH_VESSEL;
            Description = MyTextsWrapperEnum.RESEARCH_VESSEL_Description;
            Flags = MyMissionFlags.Story;

            MyMwcVector3Int baseSector = new MyMwcVector3Int(4189723, 0, -2201402);
            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation);

            RequiredMissions = new MyMissionID[] { MyMissionID.RIME_CONVINCE };
            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.RESEARCH_VESSEL_TAKE_FOURTH };
            RequiredActors = new MyActorEnum[] { MyActorEnum.MARCUS, MyActorEnum.MADELYN, MyActorEnum.TARJA, MyActorEnum.VALENTIN };


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

            var introDialogue = new MyObjectiveDialog(
                MyMissionID.RESEARCH_VESSEL_INTRO,
                null,
                this,
                new MyMissionID[] { },
                MyDialogueEnum.RESEARCH_VESSEL_0100_INTRO
            ) { SaveOnSuccess = true };
            m_objectives.Add(introDialogue);


            var reachShip = new MyObjective(
                MyTextsWrapperEnum.RESEARCH_VESSEL_REACH_SHIP,
                MyMissionID.RESEARCH_VESSEL_REACH_SHIP,
                MyTextsWrapperEnum.RESEARCH_VESSEL_REACH_SHIP_Description,
                null,
                this,
                new MyMissionID[] { MyMissionID.RESEARCH_VESSEL_INTRO },
                new MyMissionLocation(baseSector, (uint)EntityID.DummyReachShip)
            ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudEurydice };
            reachShip.OnMissionSuccess += new MissionHandler(ReachShip_Success);
            m_objectives.Add(reachShip);

    
            var checkCargo = new MyObjective( 
                MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_CARGO,
                MyMissionID.RESEARCH_VESSEL_CHECK_CARGO,
                MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_CARGO_Description,
                null,
                this,
                new MyMissionID[] { MyMissionID.RESEARCH_VESSEL_REACH_SHIP },
                new MyMissionLocation(baseSector, (uint)EntityID.checkpoint_1)
            ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudContainer };
            m_objectives.Add(checkCargo);


            var checkCommandRoom = new MyObjective(
                MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_COMMAND_ROOM,
                MyMissionID.RESEARCH_VESSEL_CHECK_COMMAND_ROOM,
                MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_COMMAND_ROOM_Description,
                null,
                this,
                new MyMissionID[] { MyMissionID.RESEARCH_VESSEL_CHECK_CARGO },
                new MyMissionLocation(baseSector, (uint)EntityID.DummyNearHub1)
            ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudCommandRoom };
            checkCommandRoom.OnMissionLoaded += new MissionHandler(checkCommandRoom_OnMissionLoaded);
            m_objectives.Add(checkCommandRoom);


            var unlockFirstCargo = new MyObjectiveEnablePrefabs(
                MyTextsWrapperEnum.RESEARCH_VESSEL_USE_HUB_1,
                MyMissionID.RESEARCH_VESSEL_USE_HUB_1,
                MyTextsWrapperEnum.RESEARCH_VESSEL_USE_HUB_1_Description,
                null,
                this,
                new MyMissionID[] { MyMissionID.RESEARCH_VESSEL_CHECK_COMMAND_ROOM },
                null,
                new List<uint> { (uint)EntityID.Hub1 },
                new List<uint> { (uint)EntityID.Door1 }
            ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudHub };
            m_objectives.Add(unlockFirstCargo);


            var checkLaboratory = new MyObjective(
                MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_LABORATORY,
                MyMissionID.RESEARCH_VESSEL_CHECK_LABORATORY,
                MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_LABORATORY_Description,
                null,
                this,
                new MyMissionID[] { MyMissionID.RESEARCH_VESSEL_USE_HUB_1 },
                new MyMissionLocation(baseSector, (uint)EntityID.checkpoint_14)
            ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudLab };
            m_objectives.Add(checkLaboratory);


            var takeFirstParts = new MyUseObjective(
                MyTextsWrapperEnum.RESEARCH_VESSEL_TAKE_FIRST,
                MyMissionID.RESEARCH_VESSEL_TAKE_FIRST,
                MyTextsWrapperEnum.RESEARCH_VESSEL_TAKE_FIRST_Description,
                null,
                this,
                new MyMissionID[] { MyMissionID.RESEARCH_VESSEL_CHECK_LABORATORY },
                new MyMissionLocation(baseSector, (uint)EntityID.Cargo3),
                MyTextsWrapperEnum.PressToTakeComponent,
                MyTextsWrapperEnum.Component,
                MyTextsWrapperEnum.TakingInProgress,
                1000,
                MyUseObjectiveType.Activating,
                radiusOverride: 50
            ) { SaveOnSuccess = true };
            takeFirstParts.OnMissionSuccess += TakeFirstParts_Success;
            m_objectives.Add(takeFirstParts);


            var checkWarehouse = new MyObjective( 
                MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_WAREHOUSE,
                MyMissionID.RESEARCH_VESSEL_CHECK_WAREHOUSE,
                MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_WAREHOUSE_Description,
                null,
                this,
                new MyMissionID[] { MyMissionID.RESEARCH_VESSEL_TAKE_FIRST }, 
                new MyMissionLocation(baseSector, (uint)EntityID.checkpoint_4)
            ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudWarehouse };
            m_objectives.Add(checkWarehouse); 


            var checkDrillMachineRoom = new MyObjective(
                MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_DRILL_ROOM,
                MyMissionID.RESEARCH_VESSEL_CHECK_DRILL_ROOM, 
                MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_DRILL_ROOM_Description,
                null,
                this,
                new MyMissionID[] { MyMissionID.RESEARCH_VESSEL_CHECK_WAREHOUSE }, 
                new MyMissionLocation(baseSector, (uint)EntityID.checkpoint_5)
            ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudDrillRoom };
            checkDrillMachineRoom.OnMissionSuccess += new MissionHandler(checkDrillMachineRoom_OnMissionSuccess);
            m_objectives.Add(checkDrillMachineRoom); 


            var checkFirstHangar = new MyObjective(
                MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_FIRST_HANGAR,
                MyMissionID.RESEARCH_VESSEL_CHECK_FIRST_HANGAR,
                MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_FIRST_HANGAR_Description,
                null,
                this,
                new MyMissionID[] { MyMissionID.RESEARCH_VESSEL_CHECK_DRILL_ROOM },
                new MyMissionLocation(baseSector, (uint)EntityID.DummyNearHub2)
            ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudHangar };
            m_objectives.Add(checkFirstHangar);


            var takeSecondParts = new MyUseObjective(
                MyTextsWrapperEnum.RESEARCH_VESSEL_TAKE_SECOND,
                MyMissionID.RESEARCH_VESSEL_TAKE_SECOND,
                MyTextsWrapperEnum.RESEARCH_VESSEL_TAKE_SECOND_Description,
                null,
                this,
                new MyMissionID[] { MyMissionID.RESEARCH_VESSEL_CHECK_FIRST_HANGAR },
                new MyMissionLocation(baseSector, (uint)EntityID.Cargo4),
                MyTextsWrapperEnum.PressToTakeComponent,
                MyTextsWrapperEnum.Component,
                MyTextsWrapperEnum.TakingInProgress,
                1000,
                MyUseObjectiveType.Activating,
                radiusOverride: 50
            ) { SaveOnSuccess = true };
            takeSecondParts.OnMissionSuccess += TakeSecondParts_Success;
            m_objectives.Add(takeSecondParts);


            var useHub2 = new MyObjectiveEnablePrefabs(
               MyTextsWrapperEnum.RESEARCH_VESSEL_USE_HUB_2,
               MyMissionID.RESEARCH_VESSEL_USE_HUB_2,
               MyTextsWrapperEnum.RESEARCH_VESSEL_USE_HUB_2_Description,
               null,
               this,
               new MyMissionID[] { MyMissionID.RESEARCH_VESSEL_TAKE_SECOND },
                null,
                new List<uint> { (uint)EntityID.Hub2 },
                new List<uint> { (uint)EntityID.Door2 }
            ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudHub };
            m_objectives.Add(useHub2);


            var checkSecondHangar = new MyObjective(
                MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_SECOND_HANGAR,
                MyMissionID.RESEARCH_VESSEL_CHECK_SECOND_HANGAR, 
                MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_SECOND_HANGAR_Description,
                null,
                this,
                new MyMissionID[] { MyMissionID.RESEARCH_VESSEL_USE_HUB_2 },
                new MyMissionLocation(baseSector, (uint)EntityID.checkpoint_7)
            ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudHangar };
            m_objectives.Add(checkSecondHangar);


            var checkThirdHangar = new MyObjective( 
                MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_THIRD_HANGAR,
                MyMissionID.RESEARCH_VESSEL_CHECK_THIRD_HANGAR,
                MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_THIRD_HANGAR_Description,
                null,
                this,
                new MyMissionID[] { MyMissionID.RESEARCH_VESSEL_CHECK_SECOND_HANGAR },
                new MyMissionLocation(baseSector, (uint)EntityID.checkpoint_8)
            ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudHangar };
            m_objectives.Add(checkThirdHangar);
          

            var checkSecondWarehouse = new MyObjective( 
                MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_SECOND_WAREHOUSE,
                MyMissionID.RESEARCH_VESSEL_CHECK_SECOND_WAREHOUSE,
                MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_SECOND_WAREHOUSE_Description,
                null,
                this,
                new MyMissionID[] { MyMissionID.RESEARCH_VESSEL_CHECK_THIRD_HANGAR },
                new MyMissionLocation(baseSector, (uint)EntityID.checkpoint_9)
            ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudWarehouse };
            m_objectives.Add(checkSecondWarehouse);
            

            var checkGenerator = new MyObjective(
                MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_GENERATOR,
                MyMissionID.RESEARCH_VESSEL_CHECK_GENERATOR,
                MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_GENERATOR_Description,
                null,
                this,
                new MyMissionID[] { MyMissionID.RESEARCH_VESSEL_CHECK_SECOND_WAREHOUSE },
                new MyMissionLocation(baseSector, (uint)EntityID.DummyNearHub3)
            ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudGeneratorRoom };
            m_objectives.Add(checkGenerator);


            var useHub3 = new MyObjectiveEnablePrefabs(
                MyTextsWrapperEnum.RESEARCH_VESSEL_USE_HUB_3,
                MyMissionID.RESEARCH_VESSEL_USE_HUB_3,
                MyTextsWrapperEnum.RESEARCH_VESSEL_USE_HUB_3_Description,
               null,
               this,
               new MyMissionID[] { MyMissionID.RESEARCH_VESSEL_CHECK_GENERATOR },
                null,
                new List<uint> { (uint)EntityID.Hub3 },
                new List<uint> { (uint)EntityID.Door3 }
            ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudHub };
            useHub3.OnMissionSuccess += new MissionHandler(UseHub3_Success);
            m_objectives.Add(useHub3);

            var takeThridProbe = new MyUseObjective(
                MyTextsWrapperEnum.RESEARCH_VESSEL_TAKE_THIRD,
                MyMissionID.RESEARCH_VESSEL_TAKE_THIRD,
                MyTextsWrapperEnum.RESEARCH_VESSEL_TAKE_THIRD_Description,
                null,
                this,
                new MyMissionID[] { MyMissionID.RESEARCH_VESSEL_USE_HUB_3 },
                new MyMissionLocation(baseSector, (uint)EntityID.Cargo2),
                MyTextsWrapperEnum.PressToTakeComponent,
                MyTextsWrapperEnum.Component,
                MyTextsWrapperEnum.TakingInProgress,
                1000,
                MyUseObjectiveType.Activating,
                radiusOverride: 50
                ) { SaveOnSuccess = true };
            takeThridProbe.OnMissionSuccess += TakeThirdParts_Success;
            m_objectives.Add(takeThridProbe);

            var takeThridProbeDialogue = new MyObjectiveDialog(
                MyTextsWrapperEnum.Null,
                MyMissionID.RESEARCH_VESSEL_TAKE_THIRD_DIALOGUE,
                MyTextsWrapperEnum.Null,
                null,
                this,
                new MyMissionID[] { MyMissionID.RESEARCH_VESSEL_TAKE_THIRD },
                MyDialogueEnum.RESEARCH_VESSEL_0700_THIRDPARTS);
            m_objectives.Add(takeThridProbeDialogue);

            var checkCargoAgain = new MyObjective(
                MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_CARGO_AGAIN,
                MyMissionID.RESEARCH_VESSEL_CHECK_CARGO_AGAIN,
                MyTextsWrapperEnum.RESEARCH_VESSEL_CHECK_CARGO_AGAIN_Description,
                null,
                this,
                new MyMissionID[] { MyMissionID.RESEARCH_VESSEL_TAKE_THIRD_DIALOGUE },
                new MyMissionLocation(baseSector, (uint)EntityID.checkpoint_1)
            ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudContainer };
            checkCargoAgain.OnMissionSuccess += new MissionHandler(CheckCargoAgain_Success);
            m_objectives.Add(checkCargoAgain);
        
            var takeFourthParts = new MyUseObjective(
                MyTextsWrapperEnum.RESEARCH_VESSEL_TAKE_FOURTH,
                MyMissionID.RESEARCH_VESSEL_TAKE_FOURTH,
                MyTextsWrapperEnum.RESEARCH_VESSEL_TAKE_FOURTH_Description,
                null,
                this,
                new MyMissionID[] { MyMissionID.RESEARCH_VESSEL_CHECK_CARGO_AGAIN },
                new MyMissionLocation(baseSector, (uint)EntityID.Cargo1),
                MyTextsWrapperEnum.PressToTakeComponent,
                MyTextsWrapperEnum.Component,
                MyTextsWrapperEnum.TakingInProgress,
                 1000,
                 MyUseObjectiveType.Activating, 
                 radiusOverride: 50
                ) { SaveOnSuccess = false };
            takeFourthParts.OnMissionSuccess += TakeFourthParts_Success;
            m_objectives.Add(takeFourthParts);


            #endregion
        }
        public MyJunkyardEACAmbushMission()
        {
            ID = MyMissionID.JUNKYARD_EAC_AMBUSH; /* ID must be added to MyMissions.cs */
            DebugName = new StringBuilder("13-EAC ambush"); // Name of mission
            Name = MyTextsWrapperEnum.JUNKYARD_EAC_AMBUSH;
            Description = MyTextsWrapperEnum.JUNKYARD_EAC_AMBUSH_Description;
            Flags = MyMissionFlags.Story;
            RequiredActors = new MyActorEnum[] { MyActorEnum.MADELYN, MyActorEnum.MARCUS, MyActorEnum.TARJA, MyActorEnum.VALENTIN };
            MyMwcVector3Int baseSector = new MyMwcVector3Int(2567538, 0, -172727); // Story sector of the script - i.e. (-2465,0,6541)

            Location = new MyMissionLocation(baseSector, (uint)EntityID.PlayerStart); // Starting dummy point - must by typecasted to uint and referenced from EntityID enum

            RequiredMissions = new MyMissionID[] { MyMissionID.RESEARCH_VESSEL }; // IDs of missions required to make this mission available
            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.JUNKYARD_EAC_AMBUSH_DEFEND_MADELYN };

            Components.Add(new MySpawnpointLimiter(m_spawns, 7));

            #region Objectives
            m_objectives = new List<MyObjective>(); // Creating of list of submissions
            var flyToManjeet = new MyMeetObjective(
                MyTextsWrapperEnum.EAC_AMBUSH_FLY_TO_MANJEET,
                MyMissionID.JUNKYARD_EAC_AMBUSH_FLY_MANJEET,
                MyTextsWrapperEnum.EAC_AMBUSH_FLY_TO_MANJEET_DESC,
                this,
                new MyMissionID[] { },
                null,
                (uint)EntityID.FlyToManjeet,
                100,
                0.25f,
                null,
                MyDialogueEnum.EAC_AMBUSH_0100_INTRO
                ) { SaveOnSuccess = false, FollowMe = false };
            flyToManjeet.OnMissionLoaded += FlyToManjeet_Loaded;
            m_objectives.Add(flyToManjeet);

            var speakToManjeet = new MyObjectiveDialog(
                MyMissionID.JUNKYARD_EAC_AMBUSH_TALK_RANIJT,
                null,
                this,
                new MyMissionID[] { MyMissionID.JUNKYARD_EAC_AMBUSH_FLY_MANJEET },
                MyDialogueEnum.EAC_AMBUSH_0200_MANJEET
                ) { SaveOnSuccess = false };
            speakToManjeet.OnMissionLoaded += SpeakToManjeet_Loaded;
            m_objectives.Add(speakToManjeet);

            m_backToMadelyn = new MyObjective(
                MyTextsWrapperEnum.EAC_AMBUSH_GO_BACK_TO_MADELYN,
                MyMissionID.JUNKYARD_EAC_AMBUSH_GO_BACK_TO_MADELYN,
                MyTextsWrapperEnum.EAC_AMBUSH_GO_BACK_TO_MADELYN_DESC,
                null,
                this,
                new MyMissionID[] { MyMissionID.JUNKYARD_EAC_AMBUSH_TALK_RANIJT },
                new MyMissionLocation(baseSector, (uint)EntityID.GoBackToMadelyn),
                startDialogId: MyDialogueEnum.EAC_AMBUSH_0300_GUYS_HURRY_UP
            ) { HudName = MyTextsWrapperEnum.Nothing };
            m_backToMadelyn.OnMissionLoaded += BackToMadelyn_Loaded;
            m_objectives.Add(m_backToMadelyn);

            m_speakWithPolice = new MyObjective(
                MyTextsWrapperEnum.Null,
                MyMissionID.JUNKYARD_EAC_AMBUSH_SPEAK_POLICE,
                MyTextsWrapperEnum.Null,
                null,
                this,
                new MyMissionID[] { MyMissionID.JUNKYARD_EAC_AMBUSH_GO_BACK_TO_MADELYN },
                null
            );
            m_speakWithPolice.OnMissionLoaded += SpeakWithPolice_Loaded;
            m_objectives.Add(m_speakWithPolice);

            m_defendMadelyn = new MyObjectiveDialog(
                MyTextsWrapperEnum.EAC_AMBUSH_DEFEND_MADELYN1,
                MyMissionID.JUNKYARD_EAC_AMBUSH_DEFEND_MADELYN_1,
                MyTextsWrapperEnum.EAC_AMBUSH_DEFEND_MADELYN1_DESC,
                null,
                this,
                new MyMissionID[] { MyMissionID.JUNKYARD_EAC_AMBUSH_SPEAK_POLICE },
                MyDialogueEnum.EAC_AMBUSH_0500_ONE_LITTLE_ISSUE
                ) { SaveOnSuccess = true };
            m_defendMadelyn.OnMissionLoaded += DefendMadelyn_Loaded;
            m_objectives.Add(m_defendMadelyn);

            var destroyGenerator  = new MyObjectiveDestroy(
                MyTextsWrapperEnum.EAC_AMBUSH_DESTROY_GENERATOR,
                MyMissionID.JUNKYARD_EAC_AMBUSH_DESTROY_GENERATOR,
                MyTextsWrapperEnum.EAC_AMBUSH_DESTROY_GENERATOR_DESC,
                null,
                this,
                new MyMissionID[] { MyMissionID.JUNKYARD_EAC_AMBUSH_DEFEND_MADELYN_1 },
                new List<uint> {  (uint)EntityID.DestroyGenerator}
                ) { SaveOnSuccess = true, StartDialogId = MyDialogueEnum.EAC_AMBUSH_0700_SPLIT_TO_DESTROY_GENERATORS, HudName = MyTextsWrapperEnum.HudDisruptor };
            destroyGenerator.OnMissionLoaded += DestroyGenerator_Loaded;
            destroyGenerator.OnMissionSuccess += DestroyGenerator_Success;
            m_objectives.Add(destroyGenerator);

            var returnToMadelyn = new MyTimedReachLocationObjective(
                MyTextsWrapperEnum.EAC_AMBUSH_RETURN_TO_MADELYN,
                MyMissionID.JUNKYARD_EAC_AMBUSH_RETUR_TO_MADELYN,
                MyTextsWrapperEnum.EAC_AMBUSH_RETURN_TO_MADELYN_DESC,
                null,
                this,
                new MyMissionID[] { MyMissionID.JUNKYARD_EAC_AMBUSH_DESTROY_GENERATOR },
                new TimeSpan(0, 0, 45),
                new MyMissionLocation(baseSector, (uint)EntityID.ReturnToMadelyn)
                ) { SaveOnSuccess = true, StartDialogId = MyDialogueEnum.EAC_AMBUSH_1000, HudName = MyTextsWrapperEnum.HudMadelynsSapho };
            returnToMadelyn.OnMissionLoaded += ReturnToMadelyn_Loaded;
            m_objectives.Add(returnToMadelyn);

            m_defendMadelyn2 = new MyObjective(
                MyTextsWrapperEnum.EAC_AMBUSH_DEFEND_MADELYN2,
                MyMissionID.JUNKYARD_EAC_AMBUSH_DEFEND_MADELYN,
                MyTextsWrapperEnum.EAC_AMBUSH_DEFEND_MADELYN2_DESC,
                null,
                this,
                new MyMissionID[] { MyMissionID.JUNKYARD_EAC_AMBUSH_RETUR_TO_MADELYN },
                null
            ) { StartDialogId = MyDialogueEnum.EAC_AMBUSH_1200_1300 };
            m_defendMadelyn2.OnMissionLoaded += DefendMadelyn2_Loaded;
            m_defendMadelyn2.OnMissionUpdate += DefendMadelyn2_Update;
            m_objectives.Add(m_defendMadelyn2);

            #endregion
        }
        public MyRussianTransmitterMission()
        {
            ID          = MyMissionID.RUSSIAN_TRANSMITTER; /* ID must be added to MyMissions.cs */
            DebugName   = new StringBuilder("17-RUF transmitter");
            Name        = MyTextsWrapperEnum.RUSSIAN_TRANSMITTER;
            Description = MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_Description;
            Flags       = MyMissionFlags.Story;

            MyMwcVector3Int baseSector = new MyMwcVector3Int(-4988032, 0, -865747);             // Story sector of the script - i.e. (-2465,0,6541)

            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation);         // Starting dummy point - must by typecasted to uint and referenced from EntityID enum

            RequiredMissions           = new MyMissionID[] { MyMissionID.CHINESE_TRANSMITTER }; // IDs of missions required to make this mission available
            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.RUSSIAN_TRANSMITTER_BACK_TO_MADELYN };
            RequiredActors             = new MyActorEnum[] { MyActorEnum.MADELYN, MyActorEnum.TARJA, MyActorEnum.VALENTIN };

            #region Objectives

            m_objectives = new List <MyObjective>(); // Creating of list of submissions

            var introDialogue = new MyObjectiveDialog(
                MyMissionID.RUSSIAN_TRANSMITTER_INTRO_DIALOGUE,
                null,
                this,
                new MyMissionID[] { },
                MyDialogueEnum.RUSSIAN_TRANSMITTER_0100_INTRO);
            m_objectives.Add(introDialogue);

            // START OF REACH OBJECTIVE SUBMISSION DEFINITION
            var reachSideEntrance = new MyObjective(                                    // One member of that list - its type defines the type of submission - MySubmission means fly to the dummypoint to success. Here it is var so you cannot call methods on it
                MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_REACH_SIDE_ENTRANCE,             // Name of the submission
                MyMissionID.RUSSIAN_TRANSMITTER_REACH_SIDE_ENTRANCE,                    // ID of the submission - must be added to MyMissions.cs
                MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_REACH_SIDE_ENTRANCE_Description, // Description of the submission
                null,
                this,
                new MyMissionID[] { MyMissionID.RUSSIAN_TRANSMITTER_INTRO_DIALOGUE }, // ID of submissions required to make this submission available - it is clear so this submission is the starting submission
                new MyMissionLocation(baseSector, (uint)EntityID.OutpostSideEntrance) // ID of dummy point of checkpoint
                )
            {
                SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudEntrance
            };                                   // False means do not save game in that checkpoint
            m_objectives.Add(reachSideEntrance); // Adding this submission to the list of submissions of current mission
            // END OF REACH OBJECTIVE SUBMISSION DEFINITION


            var enterTheBase = new MyObjective(
                MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_ENTER_THE_BASE,
                MyMissionID.RUSSIAN_TRANSMITTER_ENTER_THE_BASE,
                MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_ENTER_THE_BASE_Description,
                null,
                this,
                new MyMissionID[] { MyMissionID.RUSSIAN_TRANSMITTER_REACH_SIDE_ENTRANCE },
                new MyMissionLocation(baseSector, (uint)EntityID.EnterTheBase)
                )
            {
                SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudEntrance
            };
            enterTheBase.OnMissionLoaded  += new MissionHandler(enterTheBase_OnMissionLoaded);
            enterTheBase.OnMissionSuccess += new MissionHandler(enterTheBase_OnMissionSuccess);
            m_objectives.Add(enterTheBase);


            var findFrequency = new MyUseObjective(
                MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_FIND_FREQUENCY,
                MyMissionID.RUSSIAN_TRANSMITTER_FIND_FREQUENCY,
                MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_FIND_FREQUENCY_Description,
                null,
                this,
                new MyMissionID[] { MyMissionID.RUSSIAN_TRANSMITTER_ENTER_THE_BASE },
                new MyMissionLocation(baseSector, (uint)EntityID.SabotageTurrets_1),
                MyTextsWrapperEnum.PressToDownloadData,
                MyTextsWrapperEnum.SecurityControlHUB,
                MyTextsWrapperEnum.DownloadingData,
                10000,
                MyUseObjectiveType.Hacking
                )
            {
                SaveOnSuccess = false
            };
            findFrequency.OnMissionLoaded  += new MissionHandler(findFrequency_OnMissionLoaded);
            findFrequency.OnMissionSuccess += FindFrequency_Success;
            m_objectives.Add(findFrequency);

            m_strangerContact = new MyObjectiveDialog(
                MyTextsWrapperEnum.Null,
                MyMissionID.RUSSIAN_TRANSMITTER_STRANGER_CONTACT,
                MyTextsWrapperEnum.Null,
                null,
                this,
                new MyMissionID[] { MyMissionID.RUSSIAN_TRANSMITTER_FIND_FREQUENCY },
                MyDialogueEnum.RUSSIAN_TRANSMITTER_0500_0600_HACKPROBLEM_STRANGERCALLS
                );
            m_objectives.Add(m_strangerContact);

            var meetStranger = new MyObjective(
                MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_MEET_STRANGER,
                MyMissionID.RUSSIAN_TRANSMITTER_MEET_STRANGER,
                MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_MEET_STRANGER_Description,
                null,
                this,
                new MyMissionID[] { MyMissionID.RUSSIAN_TRANSMITTER_STRANGER_CONTACT },
                new MyMissionLocation(baseSector, (uint)EntityID.ShipVolodia),
                radiusOverride: 90f
                )
            {
                SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudStranger
            };
            meetStranger.OnMissionLoaded  += MeetStranger_Loaded;
            meetStranger.OnMissionSuccess += MeetStranger_Success;
            m_objectives.Add(meetStranger);



            var reachWarehouse = new MyObjective(
                MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_REACH_WAREHOUSE,
                MyMissionID.RUSSIAN_TRANSMITTER_REACH_WAREHOUSE,
                MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_REACH_WAREHOUSE_Description,
                null,
                this,
                new MyMissionID[] { MyMissionID.RUSSIAN_TRANSMITTER_MEET_STRANGER },
                new MyMissionLocation(baseSector, (uint)EntityID.ReachWarehouse)
                )
            {
                SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudWarehouse
            };
            reachWarehouse.OnMissionLoaded += new MissionHandler(ReachWarehouse_Loaded);
            m_objectives.Add(reachWarehouse);


            var stealMilitarySupply = new MyUseObjective(
                MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_STEAL_MILITARY_SUPPLY,
                MyMissionID.RUSSIAN_TRANSMITTER_STEAL_MILITARY_SUPPLY,
                MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_STEAL_MILITARY_SUPPLY_Description,
                null,
                this,
                new MyMissionID[] { MyMissionID.RUSSIAN_TRANSMITTER_REACH_WAREHOUSE },
                new MyMissionLocation(baseSector, (uint)EntityID.StealMilitarySupply),
                MyTextsWrapperEnum.PressToTakeCargo,
                MyTextsWrapperEnum.CargoBox,
                MyTextsWrapperEnum.TakingInProgress,
                1000,
                MyUseObjectiveType.Activating
                )
            {
                SaveOnSuccess = false
            };
            stealMilitarySupply.OnMissionSuccess += new MissionHandler(StealMilitarySupply_Success);
            m_objectives.Add(stealMilitarySupply);


            m_tradeWithVolodia = new MyObjective(
                MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_TRADE_WITH_VOLODIA,
                MyMissionID.RUSSIAN_TRANSMITTER_TRADE_WITH_VOLODIA,
                MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_TRADE_WITH_VOLODIA_Description,
                null,
                this,
                new MyMissionID[] { MyMissionID.RUSSIAN_TRANSMITTER_STEAL_MILITARY_SUPPLY },
                new MyMissionLocation(baseSector, (uint)EntityID.ShipVolodia),
                radiusOverride: 90
                )
            {
                SaveOnSuccess = true, SuccessDialogId = MyDialogueEnum.RUSSIAN_TRANSMITTER_1000_VOLODIA_FOUND, HudName = MyTextsWrapperEnum.Volodia
            };
            m_tradeWithVolodia.OnMissionSuccess += TradeWithVolodia_Success;
            m_objectives.Add(m_tradeWithVolodia);


            m_fightRussianCommando = new MyObjectiveDestroy(
                MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_FIGHT_RUSSIAN_COMMANDO,
                MyMissionID.RUSSIAN_TRANSMITTER_FIGHT_RUSSIAN_COMMANDO,
                MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_FIGHT_RUSSIAN_COMMANDO_Description,
                null,
                this,
                new MyMissionID[] { MyMissionID.RUSSIAN_TRANSMITTER_TRADE_WITH_VOLODIA },
                //new List<uint> { (uint)EntityID.MothershipEntity },
                new List <uint> {
            },
                new List <uint> {
                (uint)EntityID.CommandoSpawnPoint
            },
                false
                )
            {
                SaveOnSuccess = false, SuccessDialogId = MyDialogueEnum.RUSSIAN_TRANSMITTER_1400_RETREAT, HudName = MyTextsWrapperEnum.Nothing
            };
            m_fightRussianCommando.OnMissionLoaded  += RussianCommandoLoaded;
            m_fightRussianCommando.OnMissionSuccess += new MissionHandler(FightRussianCommando_Success);
            m_objectives.Add(m_fightRussianCommando);


            var backToTransmitter = new MyObjective(
                MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_BACK_TO_TRANSMITTER,
                MyMissionID.RUSSIAN_TRANSMITTER_BACK_TO_TRANSMITTER,
                MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_BACK_TO_TRANSMITTER_Description,
                null,
                this,
                new MyMissionID[] { MyMissionID.RUSSIAN_TRANSMITTER_FIGHT_RUSSIAN_COMMANDO },    // prerekvizita - OPRAVIT na survive!!!
                new MyMissionLocation(baseSector, (uint)EntityID.BackToTransmitter)
                )
            {
                SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudTransmitter
            };
            backToTransmitter.OnMissionLoaded += new MissionHandler(BackToTransmitter_Loaded);
            m_objectives.Add(backToTransmitter);


            var decryptFrequency = new MyUseObjective(
                MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_DECRYPT_FREQUENCY,
                MyMissionID.RUSSIAN_TRANSMITTER_DECRYPT_FREQUENCY,
                MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_DECRYPT_FREQUENCY_Description,
                null,
                this,
                new MyMissionID[] { MyMissionID.RUSSIAN_TRANSMITTER_BACK_TO_TRANSMITTER },
                new MyMissionLocation(baseSector, (uint)EntityID.SabotageTurrets_1),
                MyTextsWrapperEnum.PressToHack,
                MyTextsWrapperEnum.SecurityControlHUB,
                MyTextsWrapperEnum.HackingProgress,
                5000,
                MyUseObjectiveType.Hacking
                )
            {
                SaveOnSuccess = false, SuccessDialogId = MyDialogueEnum.RUSSIAN_TRANSMITTER_1600_ITSWORKING
            };
            m_objectives.Add(decryptFrequency);


            var uploadData = new MyUseObjective(
                MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_UPLOAD_DATA,
                MyMissionID.RUSSIAN_TRANSMITTER_UPLOAD_DATA,
                MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_UPLOAD_DATA_Description,
                null,
                this,
                new MyMissionID[] { MyMissionID.RUSSIAN_TRANSMITTER_DECRYPT_FREQUENCY },
                new MyMissionLocation(baseSector, (uint)EntityID.SabotageTurrets_3),
                MyTextsWrapperEnum.PressToHack,
                MyTextsWrapperEnum.SecurityControlHUB,
                MyTextsWrapperEnum.HackingProgress,
                5000
                )
            {
                SaveOnSuccess = false, SuccessDialogId = MyDialogueEnum.RUSSIAN_TRANSMITTER_1700_UPLOADINGSIGNAL
            };
            m_objectives.Add(uploadData);


            var findMainRoomEntrance = new MyObjective(
                MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_FIND_MAIN_ROOM_ENTRANCE,
                MyMissionID.RUSSIAN_TRANSMITTER_FIND_MAIN_ROOM_ENTRANCE,
                MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_FIND_MAIN_ROOM_ENTRANCE_Description,
                null,
                this,
                new MyMissionID[] { MyMissionID.RUSSIAN_TRANSMITTER_UPLOAD_DATA },
                new MyMissionLocation(baseSector, (uint)EntityID.FindMainRoomEntrance)
                )
            {
                SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudEntrance
            };
            findMainRoomEntrance.OnMissionLoaded += new MissionHandler(findMainRoomEntrance_Loaded);
            m_objectives.Add(findMainRoomEntrance);


            var placeDeviceOnTransmitter = new MyUseObjective(
                MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_PLACE_DEVICE_ON_TRANSMITTER,
                MyMissionID.RUSSIAN_TRANSMITTER_PLACE_DEVICE_ON_TRANSMITTER,
                MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_PLACE_DEVICE_ON_TRANSMITTER_Description,
                null,
                this,
                new MyMissionID[] { MyMissionID.RUSSIAN_TRANSMITTER_FIND_MAIN_ROOM_ENTRANCE },
                new MyMissionLocation(baseSector, (uint)EntityID.PlaceDeviceOnTransmitter),
                MyTextsWrapperEnum.PressToPlaceDevice,
                MyTextsWrapperEnum.Transmitter,
                MyTextsWrapperEnum.PlacementInProgress,
                10000,
                MyUseObjectiveType.Building
                )
            {
                SaveOnSuccess = false
            };
            placeDeviceOnTransmitter.OnMissionSuccess += new MissionHandler(PlaceDeviceOnTransmitter_Success);
            m_objectives.Add(placeDeviceOnTransmitter);


            var openDoors = new MyObjectiveEnablePrefabs(
                MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_OPEN_DOORS,
                MyMissionID.RUSSIAN_TRANSMITTER_OPEN_DOORS,
                MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_OPEN_DOORS_Description,
                null,
                this,
                new MyMissionID[] { MyMissionID.RUSSIAN_TRANSMITTER_PLACE_DEVICE_ON_TRANSMITTER },
                null,
                new List <uint> {
                (uint)EntityID.Hub3
            },
                new List <uint> {
                (uint)EntityID.Door1, (uint)EntityID.Door2, (uint)EntityID.Door3, (uint)EntityID.Door4,
            }
                )
            {
                SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudHub
            };
            openDoors.OnMissionSuccess += new MissionHandler(OpenDoors_Success);
            m_objectives.Add(openDoors);


            var backToMadelyn = new MyObjective(
                MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_BACK_TO_MADELYN,
                MyMissionID.RUSSIAN_TRANSMITTER_BACK_TO_MADELYN,
                MyTextsWrapperEnum.RUSSIAN_TRANSMITTER_BACK_TO_MADELYN_Description,
                null,
                this,
                new MyMissionID[] { MyMissionID.RUSSIAN_TRANSMITTER_OPEN_DOORS },
                new MyMissionLocation(baseSector, MyMissionLocation.MADELYN_HANGAR),
                radiusOverride: MyMissionLocation.MADELYN_HANGAR_RADIUS
                )
            {
                SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudMadelynsSapho
            };
            backToMadelyn.OnMissionSuccess += new MissionHandler(BackToMadelyn_Success);
            m_objectives.Add(backToMadelyn);

            #endregion
        }
        public MyFortValiantMissionB()
            : base()
        {
            ID = MyMissionID.FORT_VALIANT_B; /* ID must be added to MyMissions.cs */
            DebugName = new StringBuilder("09c-Fort Valiant B"); // Name of mission
            Name = MyTextsWrapperEnum.FORT_VALIANT_B;
            Description = MyTextsWrapperEnum.FORT_VALIANT_B_Description;
            RequiredActors = new MyActorEnum[] { MyActorEnum.MADELYN, MyActorEnum.MARCUS, MyActorEnum.TARJA, MyActorEnum.VALENTIN };
            RequiredMissions = new MyMissionID[] { MyMissionID.SLAVER_BASE_1 };
            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.FORT_VALIANT_B_VISIT_VENDOR };
            m_objectives = new List<MyObjective>(); // Creating of list of submissions

            
            var flyOne = new MyObjective(
                (MyTextsWrapperEnum.FORT_VALIANT_B_FLY_ONE_Name),
                MyMissionID.FORT_VALIANT_B_FLY_ONE,
                (MyTextsWrapperEnum.FORT_VALIANT_B_FLY_ONE_Description),
                null,
                this,
                new MyMissionID[] { },
                new MyMissionLocation(baseSector, (uint)EntityID.DetecorGateKeeper),
                null,
                null,
                MyDialogueEnum.FORT_VALIANT_B_0100) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudFortValiant };
            m_objectives.Add(flyOne);

            /*
            var speakGateKeeper = new MyMeetObjective(
                new StringBuilder("Reach the gate of Fort Valiant"),
                MyMissionID.FORT_VALIANT_B_SPEAK_GATE_KEEPER,
                new StringBuilder(""),
                this,
                new MyMissionID[] { MyMissionID.FORT_VALIANT_FLY_ONE },
                (uint)EntityID.DetecorGateKeeper,
                (uint)EntityID.GateKeeper,
                25,
                0.25f,
                dialog3,
                dialog2
                ) { SaveOnSuccess = true };
            m_objectives.Add(speakGateKeeper);

            */

            var speakCaptain = new MyMeetObjective(
                (MyTextsWrapperEnum.FORT_VALIANT_B_MEET_CAPTAIN_Name),
                MyMissionID.FORT_VALIANT_B_MEET_CAPTAIN,
                (MyTextsWrapperEnum.FORT_VALIANT_B_MEET_CAPTAIN_Description),
                this,
                new MyMissionID[] { MyMissionID.FORT_VALIANT_B_FLY_ONE },
                (uint)EntityID.DetectorCaptain,
                (uint)EntityID.Captain,
                50,
                0.25f,
                MyDialogueEnum.FORT_VALIANT_B_0200,
                null,
                false
                ) { SaveOnSuccess = true, FollowMe = false};
            m_objectives.Add(speakCaptain);
            speakCaptain.OnMissionSuccess += SpeakCaptainOnOnMissionSuccess;

            m_visitVendor = new MyObjectiveEnterInventory(
               (MyTextsWrapperEnum.FORT_VALIANT_B_VISIT_VENDOR_Name),
               MyMissionID.FORT_VALIANT_B_VISIT_VENDOR,
               (MyTextsWrapperEnum.FORT_VALIANT_B_VISIT_VENDOR_Description),
               null,
               this,
               new MyMissionID[] { MyMissionID.FORT_VALIANT_B_MEET_CAPTAIN },
               (uint)EntityID.VendorB,
               null,
               null
               );
            m_objectives.Add(m_visitVendor);
            m_visitVendor.OnMissionLoaded += MVisitVendorOnOnMissionLoaded; 
                         /*
            var flyToMadelyn = new MyObjective(
                   new StringBuilder("Meet your mothership close to the Templar cargo bay"),
                   MyMissionID.FORT_VALIANT_B_FLY_BACK_MADELYN,
                   new StringBuilder(""),
                   null,
                   this,
                   new MyMissionID[] { MyMissionID.FORT_VALIANT_B_VISIT_VENDOR },
                   new MyMissionLocation(baseSector, MyMissionLocation.MADELYN_HANGAR)
             );
            m_objectives.Add(flyToMadelyn);
                           */


        }
        public MyWhiteWolvesResearchMission()
        {
            ID              = MyMissionID.NAZI_BIO_LAB; /* ID must be added to MyMissions.cs */
            DebugName       = new StringBuilder("18b-White Wolves bio research lab");
            Name            = MyTextsWrapperEnum.NAZI_BIO_LAB;
            Description     = MyTextsWrapperEnum.NAZI_BIO_LAB_Description;
            Flags           = MyMissionFlags.Story;
            AchievementName = MySteamAchievementNames.Mission26_BioResearch;

            /* sector where the mission is located */
            Location = new MyMissionLocation(BaseSector, (uint)EntityID.TargetUse01); // Posledne cislo - ID dummy pointu kde prijimam misiu (v tomto pripade tiez 'player start')

            RequiredMissions           = new MyMissionID[] { MyMissionID.REICHSTAG_A };
            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.NAZI_BIO_LAB_REACH_MEETING_POINT };
            RequiredActors             = new MyActorEnum[] { MyActorEnum.TARJA, MyActorEnum.VALENTIN, MyActorEnum.MADELYN };


            m_objectives = new List <MyObjective>();

            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeGetOut, 0, (uint)EntityID.SpawnpointAtGettingOut1));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeGetOut, 0, (uint)EntityID.SpawnpointAtGettingOut2));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeGetOut, 0, (uint)EntityID.SpawnpointAtGettingOut3));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeGetOut, 0, (uint)EntityID.SpawnpointAtGettingOut4));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeEnteringWarehouseAtHigh, 0, (uint)EntityID.SpawnpointAtWarehouse1));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeEnteringWarehouseAtHigh, 0, (uint)EntityID.SpawnpointAtWarehouse2));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeEnteringWarehouseAtLow, 0, (uint)EntityID.SpawnpointUponWarehouse));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeEnteringBlueprintLocation, 0, (uint)EntityID.SpawnpointAtBlueprintLocation));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeEnteringMainConnectionRoom, 0, (uint)EntityID.SpawnpointAtConnectionRoom1));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeEnteringMainConnectionRoom, 0, (uint)EntityID.SpawnpointAtConnectionRoom2));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeEnteringBioBrainsCircularRoom, 0, (uint)EntityID.SpawnpointAtBrainsConnection));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeTakingBrainSample, 0, (uint)EntityID.SpawnpointAtBrains));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectroBeforeEnteringLowerPartOfBiomachine, 0, (uint)EntityID.SpawnpointAtLowerPartOfBiomach));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeEnteringHigherPartOfBiomachine, 0, (uint)EntityID.SpawnpointAtHigherPartOfBiomach1));
            Components.Add(new MySpawnpointWaves((uint)EntityID.DetectorBeforeEnteringHigherPartOfBiomachine, 0, (uint)EntityID.SpawnpointAtHigherPartOfBiomach2));

            var m_01GetBiomachSamples1 = new MyUseObjective(
                (MyTextsWrapperEnum.NAZI_BIO_LAB_SAMPLES_BIOMACH_1_Name),
                MyMissionID.NAZI_BIO_LAB_SAMPLES_BIOMACH_1,
                (MyTextsWrapperEnum.NAZI_BIO_LAB_SAMPLES_BIOMACH_1_Description),
                null,
                this,
                new MyMissionID[] {},
                new MyMissionLocation(BaseSector, (uint)EntityID.TargetUse01),
                MyTextsWrapperEnum.PressToPickSamples,
                MyTextsWrapperEnum.Samples,
                MyTextsWrapperEnum.PickingInProgress,
                3000,
                MyUseObjectiveType.Hacking,
                MyDialogueEnum.WHITEWOLVES_RESEARCH_0200_ENTER
                )
            {
                SaveOnSuccess = true
            };

            // destroySolarDefence.OnMissionSuccess += ToHangarSubmissionSuccess;
            m_objectives.Add(m_01GetBiomachSamples1);
            m_01GetBiomachSamples1.OnMissionLoaded          += new MissionHandler(m_01GetBiomachSamples1_OnMissionLoaded);
            m_01GetBiomachSamples1.OnSuccessDialogueStarted += new MissionHandler(m_01GetBiomachSamples1_OnSuccessDialogueStarted);

            var m_02GetInsideBiomach = new MyObjective(
                (MyTextsWrapperEnum.NAZI_BIO_LAB_GET_INSIDE_Name),
                MyMissionID.NAZI_BIO_LAB_GET_INSIDE,
                (MyTextsWrapperEnum.NAZI_BIO_LAB_GET_INSIDE_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.NAZI_BIO_LAB_SAMPLES_BIOMACH_1 },
                new MyMissionLocation(BaseSector, (uint)EntityID.Target02)
                )
            {
                SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudStation
            };

            // destroySolarDefence.OnMissionSuccess += ToHangarSubmissionSuccess;
            m_objectives.Add(m_02GetInsideBiomach);


            var m_04GetOrganicSamples = new MyUseObjective(
                (MyTextsWrapperEnum.NAZI_BIO_LAB_SAMPLES_ORGANIC_Name),
                MyMissionID.NAZI_BIO_LAB_SAMPLES_ORGANIC,
                (MyTextsWrapperEnum.NAZI_BIO_LAB_SAMPLES_ORGANIC_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.NAZI_BIO_LAB_GET_INSIDE },
                new MyMissionLocation(BaseSector, (uint)EntityID.TargetUse04),
                MyTextsWrapperEnum.PressToPickSamples,
                MyTextsWrapperEnum.Samples,
                MyTextsWrapperEnum.PickingInProgress,
                3000,
                MyUseObjectiveType.Hacking,
                MyDialogueEnum.WHITEWOLVES_RESEARCH_0300_COLLECT2
                )
            {
                SaveOnSuccess = true
            };

            // destroySolarDefence.OnMissionSuccess += ToHangarSubmissionSuccess;
            m_04GetOrganicSamples.OnMissionLoaded          += new MissionHandler(m_04GetOrganicSamples_OnMissionLoaded);
            m_04GetOrganicSamples.OnSuccessDialogueStarted += new MissionHandler(m_04GetOrganicSamples_OnSuccessDialogueStarted);
            m_objectives.Add(m_04GetOrganicSamples);

            var m_05GetBiomachBlueprints = new MyUseObjective(
                (MyTextsWrapperEnum.NAZI_BIO_LAB_BLUEPRINTS_BIOMACH_Name),
                MyMissionID.NAZI_BIO_LAB_BLUEPRINTS_BIOMACH,
                (MyTextsWrapperEnum.NAZI_BIO_LAB_BLUEPRINTS_BIOMACH_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.NAZI_BIO_LAB_SAMPLES_ORGANIC },
                new MyMissionLocation(BaseSector, (uint)EntityID.TargetUse05),
                MyTextsWrapperEnum.PressToDownloadBluePrints,
                MyTextsWrapperEnum.DataTransfer,
                MyTextsWrapperEnum.DownloadingData,
                3000
                )
            {
                SaveOnSuccess = true
            };

            // destroySolarDefence.OnMissionSuccess += ToHangarSubmissionSuccess;
            m_objectives.Add(m_05GetBiomachBlueprints);
            m_05GetBiomachBlueprints.OnMissionLoaded          += new MissionHandler(m_05GetBiomachBlueprints_OnMissionLoaded);
            m_05GetBiomachBlueprints.OnSuccessDialogueStarted += new MissionHandler(m_05GetBiomachBlueprints_OnSuccessDialogueStarted);

            var m_07GetOut = new MyObjective(
                (MyTextsWrapperEnum.NAZI_BIO_LAB_GET_OUT_Name),
                MyMissionID.NAZI_BIO_LAB_GET_OUT,
                (MyTextsWrapperEnum.NAZI_BIO_LAB_GET_OUT_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.NAZI_BIO_LAB_BLUEPRINTS_BIOMACH },
                new MyMissionLocation(BaseSector, (uint)EntityID.Target07)
                )
            {
                SaveOnSuccess = true, HudName = MyTextsWrapperEnum.Nothing
            };

            // destroySolarDefence.OnMissionSuccess += ToHangarSubmissionSuccess;
            m_07GetOut.OnMissionLoaded += new MissionHandler(m_07GetOut_OnMissionLoaded);
            m_objectives.Add(m_07GetOut);


            var m_08Destroy = new MyObjectiveDestroy(
                (MyTextsWrapperEnum.NAZI_BIO_LAB_DESTROY_Name),
                MyMissionID.NAZI_BIO_LAB_DESTROY,
                (MyTextsWrapperEnum.NAZI_BIO_LAB_DESTROY_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.NAZI_BIO_LAB_GET_OUT, },
                new List <uint>()
            {
                (uint)EntityID.Target08
            },
                null,
                true,
                false
                )
            {
                SaveOnSuccess = true, HudName = MyTextsWrapperEnum.Nothing
            };

            m_objectives.Add(m_08Destroy);
            m_08Destroy.OnMissionLoaded  += M08DestroyOnMissionLoaded;
            m_08Destroy.OnMissionSuccess += M08DestroyOnMissionSuccess;

            var returnToMothership = new MyObjective(
                (MyTextsWrapperEnum.NAZI_BIO_LAB_REACH_MEETING_POINT_Name),
                MyMissionID.NAZI_BIO_LAB_REACH_MEETING_POINT,
                (MyTextsWrapperEnum.NAZI_BIO_LAB_REACH_MEETING_POINT_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.NAZI_BIO_LAB_DESTROY },
                //new MyMissionLocation(baseSector, (uint)EntityID.HangerEscapeLocation)
                new MyMissionLocation(BaseSector, MyMissionLocation.MADELYN_HANGAR),
                radiusOverride: MyMissionLocation.MADELYN_HANGAR_RADIUS
                )
            {
                HudName = MyTextsWrapperEnum.HudMadelynsSapho
            };

            returnToMothership.OnMissionLoaded += new MissionHandler(returnToMothership_OnMissionLoaded);
            m_objectives.Add(returnToMothership);
        }
        public MySmallPirateBase2()
        {
            ID          = MyMissionID.SMALL_PIRATE_BASE_2;          /* ID must be added to MyMissions.cs */
            Name        = new StringBuilder("Small pirate base 2"); // Nazev mise
            Description = new StringBuilder(                        // popis mise
                "Destroy the station\n"
                );

            MyMwcVector3Int baseSector = new MyMwcVector3Int(9708260, 0, -2101810); // Story sector of the script

            Location = new MyMissionLocation(baseSector, 1749);                     // Starting dummy point

            RequiredMissions = new MyMissionID[] { };                               // mise ktere musi byt splneny pred prijetim teto mise

            m_submissions = new List <MyObjective>();                               // Creating of list of submissions
            // START DEFINICE SUBMISE

            DestroyEnemies = new MyObjectiveDestroy( // Var is used to call functions on that member
                new StringBuilder("Destroy the mothership"),
                MyMissionID.SMALL_PIRATE_BASE_2_DESTROY_ENEMIES,
                new StringBuilder(""),
                null,
                this,
                new MyMissionID[] { },
                new List <uint> {
                5293
            },
                new List <uint> {
            },
                false
                )
            {
                SaveOnSuccess = false
            };
            m_submissions.Add(DestroyEnemies); // pridani do seznamu submisi


            DestroyGenerator = new MyObjectiveDestroy( // Var is used to call functions on that member
                new StringBuilder("Destroy the generator"),
                MyMissionID.SMALL_PIRATE_BASE_2_DESTROY_GENERATOR,
                new StringBuilder(""),
                null,
                this,
                new MyMissionID[] {  },
                new List <uint> {
                812
            },
                new List <uint> {
            },
                false
                )
            {
                SaveOnSuccess = false
            };
            m_submissions.Add(DestroyGenerator);               // pridani do seznamu submisi

            var escape = new MyObjective(                      // One member of that list - je to MySubmission takze cilem je doletet do checkpointu
                new StringBuilder("Return to the mothership"), // nazev submise
                MyMissionID.PIRATE_BASE_1_ESCAPE,              // id submise
                new StringBuilder(""),                         // popis submise
                null,
                this,
                new MyMissionID[] { MyMissionID.PIRATE_BASE_1_DESTROY_GENERATOR, }, // ID submisi ktere musi byt splneny - je to prazdne takze je to prvni submise
                new MyMissionLocation(baseSector, 2475)                             // ID of dummy point of checkpoint
                )
            {
                SaveOnSuccess = false
            };                         // nastaveni save na checkpointu nebo ne

            m_submissions.Add(escape); // pridani do seznamu submisi
        }
        public MyChineseEscapeMission()
        {
            ID = MyMissionID.CHINESE_ESCAPE; /* ID must be added to MyMissions.cs */
            Name = MyTextsWrapperEnum.CHINESE_ESCAPE;
            Description = MyTextsWrapperEnum.CHINESE_ESCAPE_Description; // "Defend Madelyn's mothership and escape with stolen cargo\n"
            DebugName = new StringBuilder("08d-Chinese escape");
            Flags = MyMissionFlags.Story;

            MyMwcVector3Int baseSector = new MyMwcVector3Int(-1919599, 0, 5268734); // Story sector of the script

            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation); // Starting dummy point

            RequiredMissions = new MyMissionID[] { MyMissionID.CHINESE_REFINERY };
            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.CHINESE_ESCAPE_SPEAK_WITH_MADELYN };
            RequiredActors = new MyActorEnum[] {MyActorEnum.MADELYN};

            m_objectives = new List<MyObjective>(); // Creating of list of submissions

            m_objective01_flyTowardsMadelyn = new MyObjective( // One member of that list
                (MyTextsWrapperEnum.CHINESE_ESCAPE_GET_CLOSER_Name),
                MyMissionID.CHINESE_ESCAPE_GET_CLOSER,
                (MyTextsWrapperEnum.CHINESE_ESCAPE_GET_CLOSER_Description),
                null,
                this,
                new MyMissionID[] { },
                new MyMissionLocation(baseSector, (uint)EntityID.O01DefendMadelyn),
                startDialogId: MyDialogueEnum.CHINESE_ESCAPE_0100_INTRODUCTION
            ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudMadelynsSapho };            
            m_objective01_flyTowardsMadelyn.OnMissionLoaded += O01FlyTowardsMadelynLoaded;
            m_objective01_flyTowardsMadelyn.OnMissionSuccess += O01FlyTowardsMadelynSuccess;

            m_objectives.Add(m_objective01_flyTowardsMadelyn);

                                    
            m_objective02_defendMadelyn = new MyObjectiveDestroy( 
                (MyTextsWrapperEnum.CHINESE_ESCAPE_DEFEND_SHIP_Name),
                MyMissionID.CHINESE_ESCAPE_DEFEND_SHIP,
                (MyTextsWrapperEnum.CHINESE_ESCAPE_DEFEND_SHIP_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.CHINESE_ESCAPE_GET_CLOSER },
                null,
                new List<uint> { (uint)EntityID.SpawnLastL, (uint)EntityID.SpawnLastR, (uint)EntityID.SpawnLastAsteroid},
                true,
                true
            ) { SaveOnSuccess = true };            
            m_objectives.Add(m_objective02_defendMadelyn);
            m_objective02_defendMadelyn.OnMissionLoaded += new MissionHandler(m_objective02_defendMadelyn_OnMissionLoaded);
            m_objective02_defendMadelyn.OnMissionCleanUp += new MissionHandler(m_objective02_defendMadelyn_OnMissionCleanUp);
                                    
            
            var objective03_lastDialogue = new MyObjectiveDialog(
                MyTextsWrapperEnum.CHINESE_ESCAPE_SPEAK_WITH_MADELYN_Name,
                MyMissionID.CHINESE_ESCAPE_SPEAK_WITH_MADELYN,
                MyTextsWrapperEnum.CHINESE_ESCAPE_SPEAK_WITH_MADELYN_Description,
                null,
                this,
                new MyMissionID[] { MyMissionID.CHINESE_ESCAPE_DEFEND_SHIP },
                dialogId: MyDialogueEnum.CHINESE_ESCAPE_1000_LAST_OF_THEM
                ) { SaveOnSuccess = false };
            m_objectives.Add(objective03_lastDialogue);
        }
        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 MySmallPirateBaseMission()
        {
            ID = MyMissionID.PIRATE_BASE_1; /* ID must be added to MyMissions.cs */
            DebugName = new StringBuilder("Small pirate base"); // Nazev mise
            Name = MyTextsWrapperEnum.PIRATE_BASE_1;
            Description = MyTextsWrapperEnum.PIRATE_BASE_1_Description;

            MyMwcVector3Int baseSector = new MyMwcVector3Int(14393995,0,2939339); // Story sector of the script

            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation); // Starting dummy point

            RequiredMissions = new MyMissionID[] { }; // mise ktere musi byt splneny pred prijetim teto mise
            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.PIRATE_BASE_1_ESCAPE };
            RequiredActors = new MyActorEnum[] { MyActorEnum.MARCUS, MyActorEnum.MADELYN, MyActorEnum.TARJA, MyActorEnum.VALENTIN };

            m_objectives = new List<MyObjective>(); // Creating of list of submissions
            // START DEFINICE SUBMISE

        
            DestroyGenerator = new MyObjectiveDestroy( // Var is used to call functions on that member
                new StringBuilder("Destroy the generator"),
                MyMissionID.PIRATE_BASE_1_DESTROY_GENERATOR,
                new StringBuilder(""),
                null,
                this,
                new MyMissionID[] {  },
                generators,
                false
            ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudGenerator };
            m_objectives.Add(DestroyGenerator); // pridani do seznamu submisi
            DestroyGenerator.OnMissionSuccess += new Missions.MissionHandler(DestroyMSSuccess);

            var escape = new MyObjective( // One member of that list - je to MySubmission takze cilem je doletet do checkpointu
                new StringBuilder("Escape"), // nazev submise
                MyMissionID.PIRATE_BASE_1_ESCAPE, // id submise
                new StringBuilder(""), // popis submise
                null,
                this,
                new MyMissionID[] { MyMissionID.PIRATE_BASE_1_DESTROY_GENERATOR, }, // ID submisi ktere musi byt splneny - je to prazdne takze je to prvni submise
                new MyMissionLocation(baseSector, MyMissionLocation.MADELYN_HANGAR), // ID of dummy point of checkpoint
                radiusOverride: MyMissionLocation.MADELYN_HANGAR_RADIUS
            ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudMadelynsSapho }; // nastaveni save na checkpointu nebo ne
            m_objectives.Add(escape); // pridani do seznamu submisi

                  


           
        }
Example #54
0
        //private MySubmisisonDefend m_defendGenerator;

        #endregion

        public MySlaverBaseMission()
        {
            m_ValidateIDlists = new List <List <uint> >();
            m_ValidateIDlists.Add(m_closeddoors);
            m_ValidateIDlists.Add(m_finalparticle);
            m_ValidateIDlists.Add(m_openedddoors);
            m_ValidateIDlists.Add(m_standbyparticle);
            m_ValidateIDlists.Add(m_pilotsSpawn);
            m_ValidateIDlists.Add(m_closeentiites);
            ID          = MyMissionID.SLAVER_BASE_1; /* ID must be added to MyMissions.cs */
            Name        = MyTextsWrapperEnum.SLAVER_BASE_GRAND_BURROW;
            Description = MyTextsWrapperEnum.SLAVER_BASE_GRAND_BURROW_Description;
            DebugName   = new StringBuilder("09b-Slaver base Grand Burrow"); // Nazev mise

            Flags = MyMissionFlags.Story;

            MyMwcVector3Int baseSector = new MyMwcVector3Int(2052452, 0, -10533886);     // Story sector of the script

            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation);  // Starting dummy point

            RequiredMissions           = new MyMissionID[] { MyMissionID.FORT_VALIANT }; // mise ktere musi byt splneny pred prijetim teto mise
            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.SLAVER_BASE_1_DIALOG_10 };
            RequiredActors             = new MyActorEnum[] { MyActorEnum.MARCUS, MyActorEnum.MADELYN, MyActorEnum.TARJA, MyActorEnum.VALENTIN };

            m_objectives = new List <MyObjective>(); // Creating of list of submissions


            // -------------- START DEFINICE SUBMISE ---------------------

            var talkWith = new MyObjectiveDialog(
                (MyTextsWrapperEnum.SLAVER_BASE_1_DIALOG_1_Name),
                MyMissionID.SLAVER_BASE_1_DIALOG_1,
                (MyTextsWrapperEnum.SLAVER_BASE_1_DIALOG_1_Description),
                null,
                this,
                new MyMissionID[] { },
                dialogId: MyDialogueEnum.SLAVERBASE_0100_INTRODUCE
                )
            {
                SaveOnSuccess = false
            };

            m_objectives.Add(talkWith);


            var DestroyGenerators = new MyObjectiveDestroy(
                // Var is used to call functions on that member
                (MyTextsWrapperEnum.SLAVER_BASE_1_DESTROY_GENERATOR_Name),
                MyMissionID.SLAVER_BASE_1_DESTROY_GENERATOR,
                (MyTextsWrapperEnum.SLAVER_BASE_1_DESTROY_GENERATOR_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.SLAVER_BASE_1_DIALOG_1 },
                Generators,
                false
                )
            {
                SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudGenerator
            };

            m_objectives.Add(DestroyGenerators); // pridani do seznamu submisi
            DestroyGenerators.OnMissionSuccess += DestroyGeneratorMSSuccess;


            var talkWith2 = new MyObjectiveDialog(
                (MyTextsWrapperEnum.SLAVER_BASE_1_DIALOG_2_Name),
                MyMissionID.SLAVER_BASE_1_DIALOG_2,
                (MyTextsWrapperEnum.SLAVER_BASE_1_DIALOG_2_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.SLAVER_BASE_1_DESTROY_GENERATOR },
                dialogId: MyDialogueEnum.SLAVERBASE_0200_GENERATORS_DESTROYED
                )
            {
                SaveOnSuccess = false
            };

            m_objectives.Add(talkWith2);


            var DestroyBatteries = new MyObjectiveDestroy(
                // Var is used to call functions on that member

                (MyTextsWrapperEnum.SLAVER_BASE_1_DESTROY_BATTERIES_Name),
                MyMissionID.SLAVER_BASE_1_DESTROY_BATTERIES,
                (MyTextsWrapperEnum.SLAVER_BASE_1_DESTROY_BATTERIES_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.SLAVER_BASE_1_DIALOG_2 },
                Batteries,
                false
                )
            {
                SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudBatteries
            };

            m_objectives.Add(DestroyBatteries); // pridani do seznamu submisi
            DestroyBatteries.OnMissionSuccess += DestroyBatteriesMSSuccess;


            var FindPrison = new MyObjective(                               // One member of that list - je to MyObjective takze cilem je doletet do checkpointu
                (MyTextsWrapperEnum.SLAVER_BASE_1_FIND_PRISON_Name),        // nazev submise
                MyMissionID.SLAVER_BASE_1_FIND_PRISON,                      // id submise
                (MyTextsWrapperEnum.SLAVER_BASE_1_FIND_PRISON_Description), // popis submise
                null,
                this,
                new MyMissionID[] { MyMissionID.SLAVER_BASE_1_DESTROY_BATTERIES }, // ID submisi ktere musi byt splneny - je to prazdne takze je to prvni submise
                new MyMissionLocation(baseSector, (uint)EntityID.Prison_Dummy),
                startDialogId: MyDialogueEnum.SLAVERBASE_0300_BATTERIES_DESTROYED  // ID of dummy point of checkpoint
                )
            {
                SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudPrison
            };                            // nastaveni save na checkpointu nebo ne

            m_objectives.Add(FindPrison); // pridani do seznamu submisi
            FindPrison.OnMissionSuccess += FindPrisonMSSuccess;


            m_freeSlaves = new MyObjectiveDestroy(
                // Var is used to call functions on that member
                (MyTextsWrapperEnum.SLAVER_BASE_1_FREE_SLAVES_Name),
                MyMissionID.SLAVER_BASE_1_FREE_SLAVES,
                (MyTextsWrapperEnum.SLAVER_BASE_1_FREE_SLAVES_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.SLAVER_BASE_1_FIND_PRISON },
                m_Bars,
                false
                )
            {
                SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudCage
            };
            m_objectives.Add(m_freeSlaves); // pridani do seznamu submisi


            var talkWith4 = new MyObjectiveDialog(
                MyMissionID.SLAVER_BASE_1_DIALOG_4,
                null,
                this,
                new MyMissionID[] { MyMissionID.SLAVER_BASE_1_FREE_SLAVES },
                dialogId: MyDialogueEnum.SLAVERBASE_0400_SLAVES_SAVED
                )
            {
                SaveOnSuccess = true
            };

            m_objectives.Add(talkWith4);


            m_hackHangar = new MyObjectiveEnablePrefabs(
                (MyTextsWrapperEnum.SLAVER_BASE_1_HACK_HANGAR_Name),
                MyMissionID.SLAVER_BASE_1_HACK_HANGAR,
                (MyTextsWrapperEnum.SLAVER_BASE_1_HACK_HANGAR_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.SLAVER_BASE_1_DIALOG_4 },
                null,
                new List <uint> {
                (uint)EntityID.Hack_PC
            },
                new List <uint> {
                (uint)EntityID.Hangar_Doors
            }
                )
            {
                HudName = MyTextsWrapperEnum.HudHub
            };
            m_objectives.Add(m_hackHangar);
            m_hackHangar.OnMissionSuccess += HangarOpen;

            m_freeSlavesMS = new MyObjectiveDestroy( // Var is used to call functions on that member
                (MyTextsWrapperEnum.SLAVER_BASE_1_FREE_SLAVES_2_Name),
                MyMissionID.SLAVER_BASE_1_FREE_SLAVES_2,
                (MyTextsWrapperEnum.SLAVER_BASE_1_FREE_SLAVES_2_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.SLAVER_BASE_1_HACK_HANGAR },
                Mothership_Bars,
                false
                )
            {
                SaveOnSuccess = false, ToDestroyCount = 1, HudName = MyTextsWrapperEnum.HudCage
            };
            m_objectives.Add(m_freeSlavesMS); // pridani do seznamu submisi


            var talkWith6 = new MyObjectiveDialog(
                (MyTextsWrapperEnum.SLAVER_BASE_1_DIALOG_6_Name),
                MyMissionID.SLAVER_BASE_1_DIALOG_6,
                (MyTextsWrapperEnum.SLAVER_BASE_1_DIALOG_6_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.SLAVER_BASE_1_FREE_SLAVES_2, },
                dialogId: MyDialogueEnum.SLAVERBASE_0600_MOTHERSHIP_EMPTY
                )
            {
                SaveOnSuccess = false
            };

            m_objectives.Add(talkWith6);


            var findSlaves = new MyObjectiveDestroy(
                // Var is used to call functions on that member
                (MyTextsWrapperEnum.SLAVER_BASE_1_FIND_SLAVES_Name),
                MyMissionID.SLAVER_BASE_1_FIND_SLAVES,
                (MyTextsWrapperEnum.SLAVER_BASE_1_FIND_SLAVES_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.SLAVER_BASE_1_DIALOG_6 },
                bar_pit,
                // ID of dummy point of checkpoint
                false
                )
            {
                SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudCage
            };

            findSlaves.MissionEntityIDs.Add((uint)EntityID.Bar_pit);
            m_objectives.Add(findSlaves); // pridani do seznamu submisi


            var talkWith7 = new MyObjectiveDialog(
                (MyTextsWrapperEnum.SLAVER_BASE_1_DIALOG_7_Name),
                MyMissionID.SLAVER_BASE_1_DIALOG_7,
                (MyTextsWrapperEnum.SLAVER_BASE_1_DIALOG_7_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.SLAVER_BASE_1_FIND_SLAVES, },
                dialogId: MyDialogueEnum.SLAVERBASE_0700_PIT_EMPTY
                )
            {
                SaveOnSuccess = false
            };

            m_objectives.Add(talkWith7);
            talkWith7.OnMissionLoaded += FreePilotsMSSuccess;


            var destroyEnemies = new MyDestroyWavesObjective(
                // Var is used to call functions on that member
                (MyTextsWrapperEnum.SLAVER_BASE_1_DESTROY_ENEMIES_Name),
                MyMissionID.SLAVER_BASE_1_DESTROY_ENEMIES,
                (MyTextsWrapperEnum.SLAVER_BASE_1_DESTROY_ENEMIES_Description),
                null,
                this,
                new[] { MyMissionID.SLAVER_BASE_1_DIALOG_7 }
                //new List<uint>
                //    {
                //        (uint) EntityID.Mothership_Spawn_1,
                //        (uint) EntityID.Mothership_Spawn_2,
                //        (uint) EntityID.Mothership_Spawn_3
                //    },
                )
            {
                SaveOnSuccess = false
            };

            destroyEnemies.AddWave(new List <uint> {
                (uint)EntityID.Mothership_Spawn_1
            });
            destroyEnemies.AddWave(new List <uint> {
                (uint)EntityID.Mothership_Spawn_2
            });
            destroyEnemies.AddWave(new List <uint> {
                (uint)EntityID.Mothership_Spawn_3
            });
            destroyEnemies.OnMissionSuccess += EnemiesDestroyed;
            m_objectives.Add(destroyEnemies); // pridani do seznamu submisi

            var talkWith9 = new MyObjectiveDialog(
                (MyTextsWrapperEnum.SLAVER_BASE_1_DIALOG_9_Name),
                MyMissionID.SLAVER_BASE_1_DIALOG_9,
                (MyTextsWrapperEnum.SLAVER_BASE_1_DIALOG_9_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.SLAVER_BASE_1_DESTROY_ENEMIES },
                dialogId: MyDialogueEnum.SLAVERBASE_0800_ENEMIES_DESTROYED
                )
            {
                SaveOnSuccess = false
            };

            m_objectives.Add(talkWith9);


            m_openHangarDoors = new MyObjectiveEnablePrefabs(
                (MyTextsWrapperEnum.SLAVER_BASE_1_HACK_NUKE_Name),
                MyMissionID.SLAVER_BASE_1_HACK_NUKE,
                (MyTextsWrapperEnum.SLAVER_BASE_1_HACK_NUKE_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.SLAVER_BASE_1_DIALOG_9 },
                null,
                new List <uint> {
                (uint)EntityID.HangarDoorsHub
            },
                new List <uint> {
                (uint)EntityID.Cargo_Bay_Doors
            }
                )
            {
                HudName = MyTextsWrapperEnum.HudHub
            };
            m_objectives.Add(m_openHangarDoors);
            m_openHangarDoors.OnMissionSuccess += MSEscape;
            m_openHangarDoors.OnMissionSuccess += MoveFourthReichMSStart;



            var talkWith10 = new MyTimedObjective(
                (MyTextsWrapperEnum.SLAVER_BASE_1_DIALOG_10_Name),
                MyMissionID.SLAVER_BASE_1_DIALOG_10,
                (MyTextsWrapperEnum.SLAVER_BASE_1_DIALOG_10_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.SLAVER_BASE_1_HACK_NUKE },
                TimeSpan.FromSeconds(50)
                )
            {
                SaveOnSuccess   = false,
                SuccessDialogId = MyDialogueEnum.SLAVERBASE_1100_FAKE_ESCAPED,
                DisplayCounter  = false,
            };

            talkWith10.MissionEntityIDs.Add((uint)EntityID.Escape_Dummy);
            m_objectives.Add(talkWith10);
        }
Example #55
0
        public MyLaikaMission()
        {
            ID = MyMissionID.LAIKA; /* ID must be added to MyMissions.cs */
            Name = MyTextsWrapperEnum.LAIKA;
            Description = MyTextsWrapperEnum.LAIKA_Description;
            DebugName = new StringBuilder("02-Laika");
            Flags = MyMissionFlags.Story;

            MyMwcVector3Int baseSector = new MyMwcVector3Int(-3851812, 0, -2054500);

            /* sector where the mission is located */
            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation);

            RequiredMissions = new MyMissionID[] { MyMissionID.EAC_SURVEY_SITE };
            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.LAIKA_LASTSTAND };
            RequiredActors = new MyActorEnum[] { MyActorEnum.MARCUS, MyActorEnum.MADELYN };

            m_objectives = new List<MyObjective>();

            var toHangarSubmission = new MyObjective(
                (MyTextsWrapperEnum.LAIKA_GOTO_10_Name),
                MyMissionID.LAIKA_GOTO_10,
                (MyTextsWrapperEnum.LAIKA_GOTO_10_Description),
                null,
                this,
                new MyMissionID[] { },
                new MyMissionLocation(baseSector, (uint)EntityID.Objective01_Hangar)
            ) { HudName = MyTextsWrapperEnum.HudHangar };
            //{ SaveOnSuccess = true };
            toHangarSubmission.OnMissionUpdate += new MissionHandler(toHangarSubmission_OnMissionUpdate);

            //toHangarSubmission.OnMissionSuccess += ToHangarSubmissionSuccess;
            toHangarSubmission.OnMissionLoaded += ToHangarSubmissionLoaded;
            m_objectives.Add(toHangarSubmission);

            var inHangarSubmission = new MyTimedObjective(
                MyTextsWrapperEnum.Null,
                MyMissionID.LAIKA_GOTO_11,
                MyTextsWrapperEnum.Null,
                null,
                this,
                new MyMissionID[] { MyMissionID.LAIKA_GOTO_10 },
                TimeSpan.FromSeconds(0.2f),
                successDialogId: MyDialogueEnum.LAIKA_0275_INSIDEHANGAR
            ) { DisplayCounter = false };

            inHangarSubmission.OnMissionSuccess += InHangarSubmissionSuccess;
            m_objectives.Add(inHangarSubmission);

            var inHangarSubmission2 = new MyTimedObjective(
                MyTextsWrapperEnum.Null,
                MyMissionID.LAIKA_GOTO_12,
                MyTextsWrapperEnum.Null,
                null,
                this,
                new MyMissionID[] { MyMissionID.LAIKA_GOTO_11 },
                TimeSpan.FromSeconds(5)
            ) { DisplayCounter = false };
            m_objectives.Add(inHangarSubmission2);

            m_generatorSubmission = new MyObjectiveDestroy(
                (MyTextsWrapperEnum.LAIKA_GOTO_GENERATOR_Name),
                MyMissionID.LAIKA_GOTO_GENERATOR,
                (MyTextsWrapperEnum.LAIKA_GOTO_GENERATOR_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.LAIKA_GOTO_12, },
                new List<uint> { (uint)EntityID.Objective01_Generator },
                successDialogID: MyDialogueEnum.LAIKA_0300_AFTERHANGAR,
                startDialogID: MyDialogueEnum.LAIKA_0277_DESTROYGENERATOR
            ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudGenerator };
            m_generatorSubmission.OnMissionSuccess += GeneratorSubmissionSuccess;
            m_generatorSubmission.OnMissionLoaded += GeneratorSubmissionLoaded;
            m_objectives.Add(m_generatorSubmission);

            m_toCommandCentreSubmission = new MyObjective(
                (MyTextsWrapperEnum.LAIKA_GOTO_COMMAND_Name),
                MyMissionID.LAIKA_GOTO_COMMAND,
                (MyTextsWrapperEnum.LAIKA_GOTO_COMMAND_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.LAIKA_GOTO_GENERATOR },
                null,
                new List<uint>() { (uint)EntityID.Objective02_CommandHub },
                successDialogId: MyDialogueEnum.LAIKA_0500_COMMAND,
                startDialogId: MyDialogueEnum.LAIKA_0350_GPS
            ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudCommandCenter };
            m_toCommandCentreSubmission.OnMissionSuccess += ToCommandCentreSubmissionSuccess;
            m_toCommandCentreSubmission.OnMissionLoaded += ToCommandCentreSubmissionLoaded;
            m_objectives.Add(m_toCommandCentreSubmission);


            m_communication01Submission = new MyObjective(
                (MyTextsWrapperEnum.LAIKA_GOTO_COMMUNICATION_01_Name),
                MyMissionID.LAIKA_GOTO_COMMUNICATION_01,
                (MyTextsWrapperEnum.LAIKA_GOTO_COMMUNICATION_01_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.LAIKA_GOTO_COMMAND },
                null,
                new List<uint>() { (uint)EntityID.Objective03_Transmitter1Hub },
                successDialogId: MyDialogueEnum.LAIKA_0700_LEFTHUB
            ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudCommunicationHub };
            m_communication01Submission.OnMissionSuccess += Communication01SubmissionSuccess;
            m_communication01Submission.OnMissionLoaded += Communication01SubmissionLoaded;
            m_objectives.Add(m_communication01Submission);


            m_communication02Submission = new MyObjective(
                (MyTextsWrapperEnum.LAIKA_GOTO_COMMUNICATION_02_Name),
                MyMissionID.LAIKA_GOTO_COMMUNICATION_02,
                (MyTextsWrapperEnum.LAIKA_GOTO_COMMUNICATION_02_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.LAIKA_GOTO_COMMUNICATION_01 },
                null,
                new List<uint>() { (uint)EntityID.Objective04_Transmitter2Hub },
                successDialogId: MyDialogueEnum.LAIKA_0800_RIGHTHUB,
                startDialogId: MyDialogueEnum.LAIKA_0700_LEFTHUB2
            ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudCommunicationHub };
            m_communication02Submission.OnMissionSuccess += Communication02SubmissionSuccess;
            m_communication02Submission.OnMissionLoaded += Communication02SubmissionLoaded;
            m_objectives.Add(m_communication02Submission);


            m_warheadSubmission = new MyObjective(
                (MyTextsWrapperEnum.LAIKA_WARHEAD_Name),
                MyMissionID.LAIKA_WARHEAD,
                (MyTextsWrapperEnum.LAIKA_WARHEAD_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.LAIKA_GOTO_COMMUNICATION_02 },
                null,
                new List<uint>() { (uint)EntityID.Objective05_Warhead },
                successDialogId: MyDialogueEnum.LAIKA_1800_WARHEAD_DONE
            ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudWarhead };
            m_warheadSubmission.OnMissionSuccess += WarheadSubmissionSuccess;
            m_warheadSubmission.OnMissionLoaded += WarheadSubmissionLoaded;
            m_objectives.Add(m_warheadSubmission);


            m_escapeSubmission = new MyObjective(
                (MyTextsWrapperEnum.LAIKA_RETURN_Name),
                MyMissionID.LAIKA_RETURN,
                (MyTextsWrapperEnum.LAIKA_RETURN_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.LAIKA_WARHEAD },
                new MyMissionLocation(baseSector, MyMissionLocation.MADELYN_HANGAR),
                radiusOverride: 1000
            ) { HudName = MyTextsWrapperEnum.HudMadelynsSapho };
            m_escapeSubmission.OnMissionLoaded += EscapeSubmissionLoaded;
            m_escapeSubmission.OnMissionSuccess += EscapeSubmissionSuccess;
            m_escapeSubmission.OnMissionUpdate += EscapeSubmissionUpdate;
            m_escapeSubmission.OnMissionCleanUp += EscapeSubmissionUnload;
            m_objectives.Add(m_escapeSubmission);
                                
            var hideSubmission = new MyTimedObjective(
                (MyTextsWrapperEnum.LAIKA_LASTSTAND_Name),
                MyMissionID.LAIKA_LASTSTAND,
                (MyTextsWrapperEnum.LAIKA_LASTSTAND_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.LAIKA_RETURN },
                TimeSpan.FromSeconds(15), true
            ) { SaveOnSuccess = false,
                DisplayCounter = false,
                HudName = MyTextsWrapperEnum.Nothing
            };
            m_objectives.Add(hideSubmission);
            hideSubmission.OnMissionLoaded += new MissionHandler(hideSubmission_OnMissionLoaded);
        }
        public MyReichstagAMission()
        {
            ID          = MyMissionID.REICHSTAG_A; /* ID must be added to MyMissions.cs */
            DebugName   = new StringBuilder("18a-Reichstag A");
            Name        = MyTextsWrapperEnum.REICHSTAG_A;
            Description = MyTextsWrapperEnum.REICHSTAG_A_Description;
            Flags       = MyMissionFlags.Story;

            MyMwcVector3Int baseSector = new MyMwcVector3Int(-2325831, 0, -7186381);

            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation);

            RequiredMissions           = new MyMissionID[] { MyMissionID.RUSSIAN_TRANSMITTER };
            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.REICHSTAG_A_COLONEL_DIALOGUE };
            RequiredActors             = new MyActorEnum[] { MyActorEnum.MADELYN, MyActorEnum.TARJA, MyActorEnum.VALENTIN };

            m_objectives = new List <MyObjective>();

            var introduction = new MyObjectiveDialog(
                MyMissionID.REICHSTAG_A_INTRODUCTION,
                null,
                this,
                new MyMissionID[] { },
                dialogId: MyDialogueEnum.REICHSTAG_A_0100_INTRODUCTION
                )
            {
                SaveOnSuccess = true
            };

            m_objectives.Add(introduction);

            var getCloserToStation = new MyObjective(
                (MyTextsWrapperEnum.REICHSTAG_A_GET_TO_MAIN_BUILDING_Name),
                MyMissionID.REICHSTAG_A_GET_TO_MAIN_BUILDING,
                (MyTextsWrapperEnum.REICHSTAG_A_GET_TO_MAIN_BUILDING_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.REICHSTAG_A_INTRODUCTION },
                new MyMissionLocation(baseSector, (uint)EntityID.MainBuilding)
                )
            {
                SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudMainBuilding
            };

            getCloserToStation.OnMissionLoaded += GetCloserToStationLoaded;
            m_objectives.Add(getCloserToStation);

            var meetColonel = new MyMeetObjective(
                (MyTextsWrapperEnum.REICHSTAG_A_MEET_COLONEL_Name),
                MyMissionID.REICHSTAG_A_MEET_COLONEL,
                (MyTextsWrapperEnum.REICHSTAG_A_MEET_COLONEL_Description),
                this,
                new MyMissionID[] { MyMissionID.REICHSTAG_A_GET_TO_MAIN_BUILDING },
                null,
                (uint)EntityID.Bot_WaltherStauffenberg,
                100,
                0.25f,
                null,
                startDialogueId: MyDialogueEnum.REICHSTAG_A_0300_REACHING_REICHSTAG
                )
            {
                SaveOnSuccess = false, FollowMe = false, HudName = MyTextsWrapperEnum.HudColonelVonStauffenberg
            };

            m_objectives.Add(meetColonel);


            var colonelDialogue = new MyObjectiveDialog(
                MyMissionID.REICHSTAG_A_COLONEL_DIALOGUE,
                null,
                this,
                new MyMissionID[] { MyMissionID.REICHSTAG_A_MEET_COLONEL },
                dialogId: MyDialogueEnum.REICHSTAG_A_0400_OFFICER_DIALOGUE
                )
            {
                SaveOnSuccess = true
            };

            m_objectives.Add(colonelDialogue);
            colonelDialogue.OnMissionSuccess += ColonelDialogueSuccess;
        }
Example #57
0
        public MyJunkyardReturnMission()
        {
            ID              = MyMissionID.JUNKYARD_RETURN;                    /* ID must be added to MyMissions.cs */
            Name            = MyTextsWrapperEnum.JUNKYARD_RETURN;
            Description     = MyTextsWrapperEnum.JUNKYARD_RETURN_Description; //"Return to Ranjit with stolen Cargoship\n"
            DebugName       = new StringBuilder("08e-Junkyard racing");       // Name of mission
            Flags           = MyMissionFlags.Story;
            AchievementName = MySteamAchievementNames.Mission12_JunkyardRacing;

            MyMwcVector3Int baseSector = new MyMwcVector3Int(2567538, 0, -172727);         // Story sector of the script - i.e. (-2465,0,6541)

            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation);    // Starting dummy point - must by typecasted to uint and referenced from EntityID enum

            RequiredMissions           = new MyMissionID[] { MyMissionID.CHINESE_ESCAPE }; // IDs of missions required to make this mission available
            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.JUNKYARD_RETURN_DIALOGUE_RETURN };
            RequiredActors             = new MyActorEnum[] { MyActorEnum.MARCUS, MyActorEnum.MADELYN, MyActorEnum.TARJA, MyActorEnum.VALENTIN };

            #region Objectives
            m_objectives = new List <MyObjective>(); // Creating of list of submissions

            var meetManjeet = new MyObjective(
                (MyTextsWrapperEnum.JUNKYARD_RETURN_MEET_SMUGGLER_Name),
                MyMissionID.JUNKYARD_RETURN_MEET_SMUGGLER,
                (MyTextsWrapperEnum.JUNKYARD_RETURN_MEET_SMUGGLER_Description),
                null,
                this,
                new MyMissionID[] {},
                new MyMissionLocation(baseSector, (uint)EntityID.Manjeet),
                new List <uint> {
                (uint)EntityID.Manjeet
            },
                radiusOverride: 50
                )
            {
                SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudManjeet
            };
            m_objectives.Add(meetManjeet);
            meetManjeet.OnMissionLoaded += O01MeetSmugglerLoaded;


            var manjeetDialogue = new MyObjectiveDialog(
                MyMissionID.JUNKYARD_RETURN_SMUGGLER_DIALOGUE,
                null,
                this,
                new MyMissionID[] { MyMissionID.JUNKYARD_RETURN_MEET_SMUGGLER },
                MyDialogueEnum.JUNKYARD_RETURN_0200
                )
            {
                SaveOnSuccess = true
            };
            manjeetDialogue.OnMissionSuccess += new MissionHandler(manjeetDialogue_OnMissionSuccess);
            m_objectives.Add(manjeetDialogue);

            var speedsterDialogue = new MyObjective(
                MyTextsWrapperEnum.Null,
                MyMissionID.JUNKYARD_RETURN_SPEEDSTER_DIALOGUE,
                MyTextsWrapperEnum.Null,
                null,
                this,
                new MyMissionID[] { MyMissionID.JUNKYARD_RETURN_SMUGGLER_DIALOGUE },
                null
                )
            {
                SaveOnSuccess = true
            };
            speedsterDialogue.OnMissionLoaded += O02SmugglerDialogueLoaded;
            m_objectives.Add(speedsterDialogue);

            m_objective03_FlyToStart = new MyObjective(
                (MyTextsWrapperEnum.JUNKYARD_RETURN_FLY_TO_START_Name),
                MyMissionID.JUNKYARD_RETURN_FLY_TO_START,
                (MyTextsWrapperEnum.JUNKYARD_RETURN_FLY_TO_START_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.JUNKYARD_RETURN_SPEEDSTER_DIALOGUE },
                null,
                startDialogId: MyDialogueEnum.JUNKYARD_RETURN_0300
                )
            {
                SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudStart
            };
            m_objective03_FlyToStart.MissionEntityIDs.Add((uint)EntityID.DetectorStartRacePosition);
            m_objective03_FlyToStart.OnMissionLoaded  += O03FlyToStartLoaded;
            m_objective03_FlyToStart.OnMissionCleanUp += O03FlyToStartCleanUp;
            m_objectives.Add(m_objective03_FlyToStart);


            m_objective04_Race = new MyObjectiveRace(
                (MyTextsWrapperEnum.JUNKYARD_RETURN_RACE_Name),
                (MyTextsWrapperEnum.JUNKYARD_RETURN_RACE_PrepareName),
                (MyTextsWrapperEnum.JUNKYARD_RETURN_RACE_GoBackName),
                MyMissionID.JUNKYARD_RETURN_RACE,
                (MyTextsWrapperEnum.JUNKYARD_RETURN_RACE_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.JUNKYARD_RETURN_FLY_TO_START },
                baseSector,
                m_raceCheckpoints,
                (uint)EntityID.DetectorStartRacePosition2
                )
            {
                SaveOnSuccess = true
            };
            m_objective04_Race.RacerNames = new List <string> {
                "Racer2", "Racer3", "Challenger"
            };
            m_objective04_Race.BotLoaded            += Race_BotLoaded;
            m_objective04_Race.OnMissionLoaded      += O04RaceLoaded;
            m_objective04_Race.OnMissionFailed      += RaceMissionFailed;
            m_objective04_Race.OnMissionSuccess     += Objective04_RaceOnOnMissionSuccess;
            m_objective04_Race.CheckpointReached    += RaceMissonOnCheckpointReached;
            m_objective04_Race.OnStartNumberChanged += RaceStartNumberChanged;
            m_objective04_Race.RaceStarted           = RaceStarted;
            m_objectives.Add(m_objective04_Race);

            m_objective05_Win = new MyObjectiveDialog(
                (MyTextsWrapperEnum.JUNKYARD_RETURN_WIN_Name),
                MyMissionID.JUNKYARD_RETURN_WIN,
                (MyTextsWrapperEnum.JUNKYARD_RETURN_WIN_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.JUNKYARD_RETURN_RACE },
                MyDialogueEnum.JUNKYARD_RETURN_1300
                )
            {
                SaveOnSuccess = false
            };
            m_objectives.Add(m_objective05_Win);
            m_objective05_Win.OnMissionLoaded += O05WinLoaded;


            m_objective06_GoToSmuggler = new MyMeetObjective(
                (MyTextsWrapperEnum.JUNKYARD_RETURN_GO_TO_SMUGGLER_name),
                MyMissionID.JUNKYARD_RETURN_GO_TO_SMUGGLER,
                (MyTextsWrapperEnum.JUNKYARD_RETURN_GO_TO_SMUGGLER_Description),
                this,
                new MyMissionID[] { MyMissionID.JUNKYARD_RETURN_WIN },
                null,
                (uint)EntityID.Manjeet,
                100,
                0.25f,
                null
                )
            {
                SaveOnSuccess = true, FollowMe = false
            };
            m_objectives.Add(m_objective06_GoToSmuggler);


            m_objective07_SmugglerDialogueReturn = new MyObjectiveDialog(
                (MyTextsWrapperEnum.JUNKYARD_RETURN_DIALOGUE_RETURN_Name),
                MyMissionID.JUNKYARD_RETURN_DIALOGUE_RETURN,
                (MyTextsWrapperEnum.JUNKYARD_RETURN_DIALOGUE_RETURN_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.JUNKYARD_RETURN_GO_TO_SMUGGLER },
                dialogId: MyDialogueEnum.JUNKYARD_RETURN_1400
                )
            {
                SaveOnSuccess = false
            };
            m_objectives.Add(m_objective07_SmugglerDialogueReturn);

            m_objective07_SmugglerDialogueReturn.OnMissionLoaded += O07SmugglerDialogueReturnLoaded;

            #endregion
        }
        public MyChineseRefineryMission()
        {
            ID = MyMissionID.CHINESE_REFINERY; /* ID must be added to MyMissions.cs */
            Name = MyTextsWrapperEnum.CHINESE_REFINERY;
            Description = MyTextsWrapperEnum.CHINESE_REFINERY_Description; // "Sneak throught the Chinese Refinery station and hack their system\n"
            DebugName = new StringBuilder("08c-Chinese refinery of Jingzhou"); // Name of mission
            Flags = MyMissionFlags.Story;

            MyMwcVector3Int baseSector = new MyMwcVector3Int(-2716080, 0, 4951053); // Story sector of the script - i.e. (-2465,0,6541)

            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation); // Starting dummy point - must by typecasted to uint and referenced from EntityID enum

            RequiredMissions = new MyMissionID[] { MyMissionID.CHINESE_TRANSPORT }; // IDs of missions required to make this mission available
            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.CHINESE_REFINERY_15_LAND_INSIDE_THE_TRANSPORTER };
            RequiredActors = new MyActorEnum[] { MyActorEnum.TARJA };

            m_objectives = new List<MyObjective>(); // Creating of list of submissions

            m_objective01_GetCloserToAsteroid = new MyObjective(
              (MyTextsWrapperEnum.CHINESE_REFINERY_01_GET_CLOSER_Name),
              MyMissionID.CHINESE_REFINERY_01_GET_CLOSER,
              (MyTextsWrapperEnum.CHINESE_REFINERY_01_GET_CLOSER_Description),
              null,
              this,
              new MyMissionID[] { },
              new MyMissionLocation(baseSector, (uint)EntityID.O01GetCloserToAsterid),
              startDialogId: MyDialogueEnum.CHINESE_REFINERY_0100_GO_CLOSER
            ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudBackDoor };
            m_objectives.Add(m_objective01_GetCloserToAsteroid);

            m_objective02_GetInside = new MyObjective(
              (MyTextsWrapperEnum.CHINESE_REFINERY_02_GET_IN_Name),
              MyMissionID.CHINESE_REFINERY_02_GET_IN,
              (MyTextsWrapperEnum.CHINESE_REFINERY_02_GET_IN_Description),
              null,
              this,
              new MyMissionID[] { MyMissionID.CHINESE_REFINERY_01_GET_CLOSER },
              new MyMissionLocation(baseSector, (uint)EntityID.O02GetInside),
              startDialogId: MyDialogueEnum.CHINESE_REFINERY_0150_GET_INSIDE
          ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.Nothing };
            m_objectives.Add(m_objective02_GetInside);

            m_objective03_FindSecretRoom = new MyObjective(
              (MyTextsWrapperEnum.CHINESE_REFINERY_03_FIND_SECRET_ROOM_Name),
              MyMissionID.CHINESE_REFINERY_03_FIND_SECRET_ROOM,
              (MyTextsWrapperEnum.CHINESE_REFINERY_03_FIND_SECRET_ROOM_Description),
              null,
              this,
              new MyMissionID[] { MyMissionID.CHINESE_REFINERY_02_GET_IN },
              new MyMissionLocation(baseSector, (uint)EntityID.O03FindSecretRoom)
          ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudResearchRoom };
            m_objectives.Add(m_objective03_FindSecretRoom);

            m_objective03_D_FindSecterRoom = new MyObjectiveDialog(
                (MyTextsWrapperEnum.CHINESE_REFINERY_03_D_FIND_SECRET_ROOM_Name),
                MyMissionID.CHINESE_REFINERY_03_D_FIND_SECRET_ROOM,
                (MyTextsWrapperEnum.CHINESE_REFINERY_03_D_FIND_SECRET_ROOM_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.CHINESE_REFINERY_03_FIND_SECRET_ROOM },
                dialogId: MyDialogueEnum.CHINESE_REFINERY_0200_LABORATORY
                ) { SaveOnSuccess = false };
            m_objectives.Add(m_objective03_D_FindSecterRoom);

            m_objective04_SetVirus = new MyObjective(
              (MyTextsWrapperEnum.CHINESE_REFINERY_04_SET_VIRUS_Name),
              MyMissionID.CHINESE_REFINERY_04_SET_VIRUS,
              (MyTextsWrapperEnum.CHINESE_REFINERY_04_SET_VIRUS_Description),
              null,
              this,
              new MyMissionID[] { MyMissionID.CHINESE_REFINERY_03_D_FIND_SECRET_ROOM },
              null,
              startDialogId: MyDialogueEnum.CHINESE_REFINERY_0300_DEACTIVATE_BOMB
          ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudHub };
            m_objective04_SetVirus.MissionEntityIDs.Add((uint)EntityID.HUBSecretRoomComputer);
            m_objectives.Add(m_objective04_SetVirus); 
            
            m_objective05_DeactivateBomb = new MyUseObjective(
                (MyTextsWrapperEnum.CHINESE_REFINERY_05_DEACTIVATE_BOMB_Name),
                MyMissionID.CHINESE_REFINERY_05_DEACTIVATE_BOMB,
                (MyTextsWrapperEnum.CHINESE_REFINERY_05_DEACTIVATE_BOMB_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.CHINESE_REFINERY_04_SET_VIRUS },
                new MyMissionLocation(baseSector, (uint)EntityID.NuclearHeadDummy),
                MyTextsWrapperEnum.PressToDeactivateNuclearHead,
                MyTextsWrapperEnum.NuclearHead,
                MyTextsWrapperEnum.DeactivatingInProgress,
                5000,
                MyUseObjectiveType.Repairing
            ) { SaveOnSuccess = false };
            m_objectives.Add(m_objective05_DeactivateBomb);

            m_objective06_GetToFirstTunnel = new MyObjective(
              (MyTextsWrapperEnum.CHINESE_REFINERY_06_GET_TO_FIRST_TUNNEL_Name),
              MyMissionID.CHINESE_REFINERY_06_GET_TO_FIRST_TUNNEL,
              (MyTextsWrapperEnum.CHINESE_REFINERY_06_GET_TO_FIRST_TUNNEL_Description),
              null,
              this,
              new MyMissionID[] { MyMissionID.CHINESE_REFINERY_05_DEACTIVATE_BOMB },
              new MyMissionLocation(baseSector, (uint)EntityID.O06GetToFirstTunnel),
              startDialogId: MyDialogueEnum.CHINESE_REFINERY_0400_GO_TO_SECOND_ASTEROID
          ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudTunnel };
            m_objectives.Add(m_objective06_GetToFirstTunnel);

            m_objective07_PastFirstTunnel = new MyObjective(
              (MyTextsWrapperEnum.CHINESE_REFINERY_07_PAST_FIRST_TUNNEL_Name),
              MyMissionID.CHINESE_REFINERY_07_PAST_FIRST_TUNNEL,
              (MyTextsWrapperEnum.CHINESE_REFINERY_07_PAST_FIRST_TUNNEL_Description),
              null,
              this,
              new MyMissionID[] { MyMissionID.CHINESE_REFINERY_06_GET_TO_FIRST_TUNNEL },
              new MyMissionLocation(baseSector, (uint)EntityID.O07PastFirstTunnel)
          ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudEnd };
            m_objectives.Add(m_objective07_PastFirstTunnel);

            m_objective08_SetBugInComputer = new MyObjective(
              (MyTextsWrapperEnum.CHINESE_REFINERY_08_SET_BUG_IN_COMPUTER_Name),
              MyMissionID.CHINESE_REFINERY_08_SET_BUG_IN_COMPUTER,
              (MyTextsWrapperEnum.CHINESE_REFINERY_08_SET_BUG_IN_COMPUTER_Description),
              null,
              this,
              new MyMissionID[] { MyMissionID.CHINESE_REFINERY_07_PAST_FIRST_TUNNEL },
              null,
              startDialogId: MyDialogueEnum.CHINESE_REFINERY_0500_FIND_THE_COMPUTER
          ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudHub };
            m_objective08_SetBugInComputer.MissionEntityIDs.Add((uint)EntityID.HUBSetBugComputer);
            m_objectives.Add(m_objective08_SetBugInComputer);

            m_objective09_GetToSecondTunnel = new MyObjective(
              (MyTextsWrapperEnum.CHINESE_REFINERY_09_GET_TO_SECOND_TUNNEL_Name),
              MyMissionID.CHINESE_REFINERY_09_GET_TO_SECOND_TUNNEL,
              (MyTextsWrapperEnum.CHINESE_REFINERY_09_GET_TO_SECOND_TUNNEL_Description),
              null,
              this,
              new MyMissionID[] { MyMissionID.CHINESE_REFINERY_08_SET_BUG_IN_COMPUTER },
              new MyMissionLocation(baseSector, (uint)EntityID.O09GetToSecondTunnel),
              startDialogId: MyDialogueEnum.CHINESE_REFINERY_0600_GO_TO_THIRD_ASTEROID
          ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudTunnel };
            m_objectives.Add(m_objective09_GetToSecondTunnel);

            m_objective10_PastSecondTunnel = new MyObjective(
              (MyTextsWrapperEnum.CHINESE_REFINERY_10_PAST_SECOND_TUNNEL_Name),
              MyMissionID.CHINESE_REFINERY_10_PAST_SECOND_TUNNEL,
              (MyTextsWrapperEnum.CHINESE_REFINERY_10_PAST_SECOND_TUNNEL_Description),
              null,
              this,
              new MyMissionID[] { MyMissionID.CHINESE_REFINERY_09_GET_TO_SECOND_TUNNEL },
              new MyMissionLocation(baseSector, (uint)EntityID.O10PastSecondTunnel)
          ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudEnd };
            m_objectives.Add(m_objective10_PastSecondTunnel); 

            m_objective11_SneakInsideTheStation = new MyObjective( // One member of that list - its type defines the type of submission - MySubmission means fly to the dummypoint to success. Here it is var so you cannot call methods on it
                (MyTextsWrapperEnum.CHINESE_REFINERY_11_SNEAK_INSIDE_THE_STATION_Name), // Name of the submission
                MyMissionID.CHINESE_REFINERY_11_SNEAK_INSIDE_THE_STATION, // ID of the submission - must be added to MyMissions.cs
                (MyTextsWrapperEnum.CHINESE_REFINERY_11_SNEAK_INSIDE_THE_STATION_Description), // Description of the submission
                null,
                this,
                new MyMissionID[] { MyMissionID.CHINESE_REFINERY_10_PAST_SECOND_TUNNEL }, // ID of submissions required to make this submission available - it is clear so this submission is the starting submission
                new MyMissionLocation(baseSector, (uint)EntityID.O11SneakToStation),
                startDialogId: MyDialogueEnum.CHINESE_REFINERY_0700_SNEAK_INSIDE_THE_STATION
            ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudBackDoor }; // False means do not save game in that checkpoint
            m_objectives.Add(m_objective11_SneakInsideTheStation); // Adding this submission to the list of submissions of current mission

             m_objective12_GetToOldPath = new MyObjective( // One member of that list - its type defines the type of submission - MySubmission means fly to the dummypoint to success. Here it is var so you cannot call methods on it
             (MyTextsWrapperEnum.CHINESE_REFINERY_12_GET_TO_OLD_PATH_Name), // Name of the submission
             MyMissionID.CHINESE_REFINERY_12_GET_TO_OLD_PATH, // ID of the submission - must be added to MyMissions.cs
             (MyTextsWrapperEnum.CHINESE_REFINERY_12_GET_TO_OLD_PATH_Description), // Description of the submission
             null,
             this,
             new MyMissionID[] { MyMissionID.CHINESE_REFINERY_11_SNEAK_INSIDE_THE_STATION }, // ID of submissions required to make this submission available - it is clear so this submission is the starting submission
             new MyMissionLocation(baseSector, (uint)EntityID.O12GetOldPath),
             startDialogId: MyDialogueEnum.CHINESE_REFINERY_0800_FIND_THE_OLD_PATH
         ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.Nothing }; // False means do not save game in that checkpoint
            m_objectives.Add(m_objective12_GetToOldPath); // Adding this submission to the list of submissions of current mission

            m_objective13_HackRefineryComputer = new MyObjective( // Var is used to call functions on that member
                (MyTextsWrapperEnum.CHINESE_REFINERY_13_HACK_REFINARY_COMPUTER_Name),
                MyMissionID.CHINESE_REFINERY_13_HACK_REFINARY_COMPUTER,
                (MyTextsWrapperEnum.CHINESE_REFINERY_13_HACK_REFINARY_COMPUTER_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.CHINESE_REFINERY_12_GET_TO_OLD_PATH },
                null,
                startDialogId:MyDialogueEnum.CHINESE_REFINERY_0900_HACK_THE_COMPUTER
            ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.HudHub };
            m_objective13_HackRefineryComputer.MissionEntityIDs.Add((uint)EntityID.HUBRefineryComputer);
            m_objectives.Add(m_objective13_HackRefineryComputer);

            m_objective14_GetOutOfTheStation = new MyObjective( // One member of that list - its type defines the type of submission - MySubmission means fly to the dummypoint to success. Here it is var so you cannot call methods on it
            (MyTextsWrapperEnum.CHINESE_REFINERY_14_GET_OUT_OF_THE_STATION_Name), // Name of the submission
            MyMissionID.CHINESE_REFINERY_14_GET_OUT_OF_THE_STATION, // ID of the submission - must be added to MyMissions.cs
            (MyTextsWrapperEnum.CHINESE_REFINERY_14_GET_OUT_OF_THE_STATION_Description), // Description of the submission
            null,
            this,
            new MyMissionID[] { MyMissionID.CHINESE_REFINERY_13_HACK_REFINARY_COMPUTER }, // ID of submissions required to make this submission available - it is clear so this submission is the starting submission
            new MyMissionLocation(baseSector, (uint)EntityID.O14GetOutOfTheStation), 
            startDialogId: MyDialogueEnum.CHINESE_REFINERY_1000_GET_OUT
            ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.Nothing }; // False means do not save game in that checkpoint
            m_objectives.Add(m_objective14_GetOutOfTheStation); // Adding this submission to the list of submissions of current mission

            m_objective15_LandInsideTheTransporter = new MyObjective( // One member of that list - its type defines the type of submission - MySubmission means fly to the dummypoint to success. Here it is var so you cannot call methods on it
         (MyTextsWrapperEnum.CHINESE_REFINERY_15_LAND_INSIDE_THE_TRANSPORTER_Name), // Name of the submission
         MyMissionID.CHINESE_REFINERY_15_LAND_INSIDE_THE_TRANSPORTER, // ID of the submission - must be added to MyMissions.cs
         (MyTextsWrapperEnum.CHINESE_REFINERY_15_LAND_INSIDE_THE_TRANSPORTER_Description), // Description of the submission
         null,
         this,
         new MyMissionID[] { MyMissionID.CHINESE_REFINERY_14_GET_OUT_OF_THE_STATION }, // ID of submissions required to make this submission available - it is clear so this submission is the starting submission
         new MyMissionLocation(baseSector, (uint)EntityID.O15LandIn) // ID of dummy point of checkpoint
         ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.HudTransport }; // False means do not save game in that checkpoint
            m_objectives.Add(m_objective15_LandInsideTheTransporter); // Adding this submission to the list of submissions of current mission



            m_objective05_DeactivateBomb.OnMissionSuccess += O05DeactivateBombSuccess;
            m_objective04_SetVirus.OnMissionSuccess += O04SetVirusSuccess;
            m_objective08_SetBugInComputer.OnMissionSuccess += O08SetBugInComputerSuccess;
            m_objective13_HackRefineryComputer.OnMissionSuccess += O13HackRefinerySuccess;

            m_objective01_GetCloserToAsteroid.OnMissionLoaded += M01GetCloserToAsteroidLoaded;
            m_objective03_FindSecretRoom.OnMissionLoaded += M03FindSecretRoomLoaded;
            m_objective04_SetVirus.OnMissionLoaded += M04SetVirusLoaded;
            m_objective05_DeactivateBomb.OnMissionLoaded += M05DeactivateBombLoaded;
            m_objective06_GetToFirstTunnel.OnMissionLoaded += M06GetToFirstTunnelLoaded;
            m_objective07_PastFirstTunnel.OnMissionLoaded += M07PastFirstTunnelLoaded;
            m_objective08_SetBugInComputer.OnMissionLoaded += M08SetBugInComputerLoaded;
            m_objective10_PastSecondTunnel.OnMissionLoaded += M10PastSecondTunnelLoaded;
            m_objective11_SneakInsideTheStation.OnMissionLoaded += M11SneakInsideTheStationLoaded;
            m_objective13_HackRefineryComputer.OnMissionLoaded += M13HackRefineryComputerLoaded;
            m_objective14_GetOutOfTheStation.OnMissionLoaded += M14GetOutOfTheStationLoaded;
        }
        public MyJunkyardConvinceMission()
        {
            ID = MyMissionID.JUNKYARD_CONVINCE; /* ID must be added to MyMissions.cs */
            Name = MyTextsWrapperEnum.JUNKYARD_CONVINCE;
            Description = MyTextsWrapperEnum.JUNKYARD_CONVINCE_Description; //"Convince the Smuggler to join you in your mission \n"
            DebugName = new StringBuilder("08a-Junkyard"); // Name of mission
            Flags = MyMissionFlags.Story;
            AchievementName = MySteamAchievementNames.Mission08_JunkyardDuncan;

            MyMwcVector3Int baseSector = new MyMwcVector3Int(2567538,0,-172727); // Story sector of the script - i.e. (-2465,0,6541)
            
            Location = new MyMissionLocation(baseSector, (uint)EntityID.StartLocation); // Starting dummy point - must by typecasted to uint and referenced from EntityID enum

            RequiredMissions = new MyMissionID[] { MyMissionID.LAST_HOPE }; // IDs of missions required to make this mission available
            RequiredMissionsForSuccess = new MyMissionID[] { MyMissionID.JUNKYARD_CONVINCE_RETURN_TO_MS };
            RequiredActors = new MyActorEnum[] { MyActorEnum.MARCUS, MyActorEnum.MADELYN, };

            #region Objectives
            m_objectives = new List<MyObjective>(); // Creating of list of submissions

            // ----- objectives -----

            m_objective01FindInformator = new MyMeetObjective(
                // One member of that list - its type defines the type of submission - MySubmission means fly to the dummypoint to success. Here it is var so you cannot call methods on it
                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_FIND_INFORMATOR_Name),
                // Name of the submission
                MyMissionID.JUNKYARD_CONVINCE_FIND_INFORMATOR,
                // ID of the submission - must be added to MyMissions.cs
                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_FIND_INFORMATOR_Description),
                // Description of the submission
                this,
                new MyMissionID[] { },
                // ID of submissions required to make this submission available - it is clear so this submission is the starting submission
                null,
                "RavenGirl",
                250,
                1.00f,
                startDialogueId:MyDialogueEnum.JUNKYARD_CONVINCE_0100_INTRODUCE
                )
                {
                    // False means do not save game in that checkpoint
                    SaveOnSuccess = false,
                    FollowMe = false
                };
            m_objective01FindInformator.OnMissionLoaded += O01FindInformatorLoaded;
            m_objectives.Add(m_objective01FindInformator);


            m_objective01BFindInformator = new MyObjectiveDialog(
                MyTextsWrapperEnum.JUNKYARD_CONVINCE_D_FIND_INFORMATOR_Name,
                MyMissionID.JUNKYARD_CONVINCE_D_FIND_INFORMATOR,
                MyTextsWrapperEnum.JUNKYARD_CONVINCE_D_FIND_INFORMATOR_Description,
                null,
                this,
                new MyMissionID[] { MyMissionID.JUNKYARD_CONVINCE_FIND_INFORMATOR },
                dialogId: MyDialogueEnum.JUNKYARD_CONVINCE_0200_INFORMATOR
                )
                {
                    SaveOnSuccess = false,
                };
            m_objective01BFindInformator.OnMissionLoaded += O01BFindInformatorLoaded;
            m_objective01BFindInformator.OnMissionSuccess += O01BFindInformatorSuccess;
            m_objectives.Add(m_objective01BFindInformator);

            m_objective02FindSmuggler = new MyObjective(
                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_FIND_SMUGGLER_Name),
                MyMissionID.JUNKYARD_CONVINCE_FIND_SMUGGLER,
                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_FIND_SMUGGLER_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.JUNKYARD_CONVINCE_D_FIND_INFORMATOR },
                new MyMissionLocation(baseSector, (uint) EntityID.FindSmuggler) // ID of dummy point of checkpoint
                )
                {
                    SaveOnSuccess = false,
                    SuccessDialogId = MyDialogueEnum.JUNKYARD_CONVINCE_0300_RUN,
                    HudName = MyTextsWrapperEnum.HudManjeet
                };
            m_objective02FindSmuggler.OnMissionLoaded += O02FindSmugglerLoaded;
            m_objective02FindSmuggler.OnMissionSuccess += O2FindSmugglerSuccess;
            m_objectives.Add(m_objective02FindSmuggler);

            m_objective04FollowSmuggler = new MyMeetObjective(
                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_FOLLOW_SMUGGLER_Name),
                MyMissionID.JUNKYARD_CONVINCE_FOLLOW_SMUGGLER,
                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_FOLLOW_SMUGGLER_Description),
                this,
                new MyMissionID[] { MyMissionID.JUNKYARD_CONVINCE_FIND_SMUGGLER },
                null,
                (uint) EntityID.Smuggler,
                300,
                1.00f
                )
                {
                    SaveOnSuccess = false,
                    FollowMe = false
                };
            m_objective04FollowSmuggler.OnMissionLoaded += O04FollowSmugglerLoaded;
            m_objective04FollowSmuggler.OnMissionSuccess += O04FollowSmugglerSuccess;
            m_objectives.Add(m_objective04FollowSmuggler);

            m_objective04DFollowSmuggler = new MyObjectiveDialog(
                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_D_FOLLOW_SMUGGLER_Name),
                MyMissionID.JUNKYARD_CONVINCE_D_FOLLOW_SMUGGLER,
                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_D_FOLLOW_SMUGGLER_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.JUNKYARD_CONVINCE_FOLLOW_SMUGGLER },
                dialogId: MyDialogueEnum.JUNKYARD_CONVINCE_0500_CATCHED
                ) { SaveOnSuccess = false, };
            m_objectives.Add(m_objective04DFollowSmuggler);
            m_objective04DFollowSmuggler.OnMissionLoaded += O04DFollowSmugglerLoaded;
            m_objective04DFollowSmuggler.OnMissionSuccess += O04DFollowSmugglerSuccess;

            m_objective05GetCloserToEnemy = new MyObjective(
                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_FLY_TO_ENEMY_Name),
                MyMissionID.JUNKYARD_CONVINCE_FLY_TO_ENEMY,
                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_FLY_TO_ENEMY_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.JUNKYARD_CONVINCE_D_FOLLOW_SMUGGLER },
                new MyMissionLocation(baseSector, (uint) EntityID.FlyToEnemy),
                radiusOverride: 500f
            ) { SaveOnSuccess = true, HudName = MyTextsWrapperEnum.Nothing };
            m_objective05GetCloserToEnemy.OnMissionLoaded += O05GetCloserToEnemyLoaded;
            m_objectives.Add(m_objective05GetCloserToEnemy);

            m_objective05MetZappasFirstGangman = new MyObjectiveDialog(
                MyMissionID.JUNKYARD_CONVINCE_MEET_GANGMAN,
                null,
                this,
                new MyMissionID[] { MyMissionID.JUNKYARD_CONVINCE_FLY_TO_ENEMY },
                dialogId: MyDialogueEnum.JUNKYARD_CONVINCE_0650_MET_ZAPPA_GUARD
            );
            m_objectives.Add(m_objective05MetZappasFirstGangman);
            m_objective05MetZappasFirstGangman.OnMissionLoaded += O05MetZappasFirstGangmanLoaded;
            m_objective05MetZappasFirstGangman.OnMissionSuccess += O05MetZappasFirstGangmanSuccess;

            m_objective06KillWaves = new MyDestroyWavesObjective(
                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_KILL_WAVES_Name),
                MyMissionID.JUNKYARD_CONVINCE_KILL_WAVES,
                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_KILL_WAVES_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.JUNKYARD_CONVINCE_MEET_GANGMAN },
                null,
                null,
                null,
                null,
                4
                ) { SaveOnSuccess = false };
            m_objective06KillWaves.AddWave(new List<uint> {(uint)EntityID.SP1_1, (uint)EntityID.SP1_2, (uint)EntityID.SP1_3, (uint)EntityID.SP1_4});
            m_objective06KillWaves.AddWave(new List<uint> {(uint)EntityID.SP2_1, (uint)EntityID.SP2_2});
            m_objective06KillWaves.AddWave(new List<uint> { (uint)EntityID.SP3_1, (uint)EntityID.SP3_2, (uint)EntityID.SP3_3 });
            m_objective06KillWaves.OnMissionLoaded += O06KillWavesLoaded;
            m_objective06KillWaves.OnMissionSuccess += O06KillWavesSuccess;
            m_objectives.Add(m_objective06KillWaves);

            m_objective07SpeakWithMomo = new MyMeetObjective(
                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_SPEAK_WITH_MOMO_Name),
                MyMissionID.JUNKYARD_CONVINCE_SPEAK_WITH_MOMO,
                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_SPEAK_WITH_MOMO_Description),
                this,
                new MyMissionID[] { MyMissionID.JUNKYARD_CONVINCE_KILL_WAVES },
                null,
                (uint?) null,
                500,
                1.00f
                )
                {
                    SaveOnSuccess = false,
                    FollowMe = false
                };
            m_objectives.Add(m_objective07SpeakWithMomo);

            m_objective07DSpeakWithMomo = new MyObjectiveDialog(
                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_D_SPEAK_WITH_MOMO_Name),
                MyMissionID.JUNKYARD_CONVINCE_D_SPEAK_WITH_MOMO,
                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_D_SPEAK_WITH_MOMO_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.JUNKYARD_CONVINCE_SPEAK_WITH_MOMO },
                dialogId: MyDialogueEnum.JUNKYARD_CONVINCE_0900_THE_MOMO
                ) { SaveOnSuccess = false };
            m_objectives.Add(m_objective07DSpeakWithMomo);
            m_objective07DSpeakWithMomo.OnMissionLoaded += O07DSpeakWithMomoLoaded;
            m_objective07DSpeakWithMomo.OnMissionSuccess += O07DSpeakWithMomoSuccess;

            m_objective08FightMomo = new MyObjectiveDestroy(
                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_FIGHT_MOMO_Name),
                MyMissionID.JUNKYARD_CONVINCE_FIGHT_MOMO,
                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_FIGHT_MOMO_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.JUNKYARD_CONVINCE_D_SPEAK_WITH_MOMO },
                null,
                new List<uint> { (uint) EntityID.SP4_1, (uint) EntityID.SP4_2, (uint) EntityID.MomoZappaSP },
                true
                ) { SaveOnSuccess = false, HudName = MyTextsWrapperEnum.Nothing };
            m_objective08FightMomo.OnMissionLoaded += O08FightMomoLoaded;
            m_objectives.Add(m_objective08FightMomo);

            m_objective09ReturnToSmuggler = new MyMeetObjective(
                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_RETURN_TO_SMUGGLER_Name),
                MyMissionID.JUNKYARD_CONVINCE_RETURN_TO_SMUGGLER,
                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_RETURN_TO_SMUGGLER_Description),
                this,
                new MyMissionID[] { MyMissionID.JUNKYARD_CONVINCE_FIGHT_MOMO },
                null,
                (uint) EntityID.Smuggler,
                300,
                1.00f
                //startDialogueId: MyDialogueEnum.JUNKYARD_CONVINCE_1000_LAST_OF_THEM
                ) { SaveOnSuccess = true, FollowMe = false };
            m_objective09ReturnToSmuggler.OnMissionLoaded += O09ReturnToSmugglerLoaded;
            m_objectives.Add(m_objective09ReturnToSmuggler);

            m_objective09DReturnToSmuggler = new MyObjectiveDialog(
                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_D_RETURN_TO_SMUGGLER_Name),
                MyMissionID.JUNKYARD_CONVINCE_D_RETURN_TO_SMUGGLER,
                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_D_RETURN_TO_SMUGGLER_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.JUNKYARD_CONVINCE_RETURN_TO_SMUGGLER },
                dialogId: MyDialogueEnum.JUNKYARD_CONVINCE_1100_FIGHT_ENDS
            ) { SaveOnSuccess = false };
            m_objectives.Add(m_objective09DReturnToSmuggler);
            m_objective09DReturnToSmuggler.OnMissionLoaded += O09DReturnToSmugglerLoaded;
            m_objective09DReturnToSmuggler.OnMissionSuccess += O09DReturnToSmugglerSuccess;

            m_objective10FindBombDealer = new MyMeetObjective(
                // One member of that list - its type defines the type of submission - MySubmission means fly to the dummypoint to success. Here it is var so you cannot call methods on it
                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_GO_TO_BOMB_DEALER_Name),
                // Name of the submission
                MyMissionID.JUNKYARD_CONVINCE_GO_TO_BOMB_DEALER,
                // ID of the submission - must be added to MyMissions.cs
                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_GO_TO_BOMB_DEALER_Description),
                // Description of the submission
                this,
                new MyMissionID[] { MyMissionID.JUNKYARD_CONVINCE_D_RETURN_TO_SMUGGLER },
                // ID of submissions required to make this submission available - it is clear so this submission is the starting submission
                null,
                (uint) EntityID.BombDealer,
                300,
                1.00f
                )
                {
                    SaveOnSuccess = false,
                    RequiredActors = new MyActorEnum[] { MyActorEnum.TARJA, MyActorEnum.VALENTIN },
                    FollowMe = false
                };
            m_objective10FindBombDealer.OnMissionLoaded += O10FindBombDealerLoaded;
            m_objectives.Add(m_objective10FindBombDealer);

            m_objective10DFindBombDealer = new MyObjectiveDialog(
                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_D_GO_TO_BOMB_DEALER_Name),
                MyMissionID.JUNKYARD_CONVINCE_D_GO_TO_BOMB_DEALER,
                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_D_GO_TO_BOMB_DEALER_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.JUNKYARD_CONVINCE_GO_TO_BOMB_DEALER},
                dialogId: MyDialogueEnum.JUNKYARD_CONVINCE_1300_BOMB_DEALER
            ) { SaveOnSuccess = false };
            m_objectives.Add(m_objective10DFindBombDealer);
            m_objective10DFindBombDealer.OnMissionLoaded += O10DFindBombDealerLoaded;
            m_objective10DFindBombDealer.OnMissionSuccess += O10DFindBombDealerSuccess;

            m_objective11GetToMarcus = new MyMeetObjective(
                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_GO_TO_MARCUS_Name),
                MyMissionID.JUNKYARD_CONVINCE_GO_TO_MARCUS,
                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_GO_TO_MARCUS_Description),
                this,
                new MyMissionID[] { MyMissionID.JUNKYARD_CONVINCE_D_GO_TO_BOMB_DEALER },
                null,
                "Marcus",
                300,
                1.00f
                )
                {
                    SaveOnSuccess = true,
                    FollowMe = false,
                };
            m_objective11GetToMarcus.OnMissionLoaded += O11GetToMarcusLoaded;
            m_objective11GetToMarcus.OnMissionSuccess += O11GetToMarcusSuccess;
            m_objectives.Add(m_objective11GetToMarcus);

            var objective11DGetToMarcus = new MyObjectiveDialog(
                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_D_GO_TO_MARCUS_Name),
                MyMissionID.JUNKYARD_CONVINCE_D_GO_TO_MARCUS,
                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_D_GO_TO_MARCUS_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.JUNKYARD_CONVINCE_GO_TO_MARCUS },
                dialogId: MyDialogueEnum.JUNKYARD_CONVINCE_1400_ARRIVED_AT_MARCUS
                ) { SaveOnSuccess = false };
            m_objectives.Add(objective11DGetToMarcus);

            m_objective12BrFight = new MyDestroyWavesObjective(
                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_BR_FIGHT_Name),
                MyMissionID.JUNKYARD_CONVINCE_BR_FIGHT,
                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_BR_FIGHT_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.JUNKYARD_CONVINCE_D_GO_TO_MARCUS },
                new List<uint>
                    {
                        (uint) EntityID.BR_SP_1,
                        (uint) EntityID.BR_SP_2,
                        (uint) EntityID.BR_SP_3,
                        (uint) EntityID.BR_SP_4,
                        (uint) EntityID.BR_SP_Boss
                    }
                )
                {
                    SaveOnSuccess = false,
                    StartDialogId = MyDialogueEnum.JUNKYARD_CONVINCE_1500_GANGSTER_FIGHT_STARTED,
                    SuccessDialogId = MyDialogueEnum.JUNKYARD_CONVINCE_1600_GO_TO_MS
                };
            m_objective12BrFight.OnMissionLoaded += O12BRFightLoaded;
            m_objective12BrFight.OnMissionSuccess += O12BRFightSuccess;
            m_objective12BrFight.AddWave(m_killWavesSecond1);
            m_objective12BrFight.AddWave(m_killWavesSecond2);
            m_objective12BrFight.AddWave(m_killWavesSecond3);
            m_objective12BrFight.AddWave(m_killWavesSecond4);
            m_objectives.Add(m_objective12BrFight);

            m_objective13FlyToMS = new MyObjective(
                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_RETURN_TO_MS_Name),
                MyMissionID.JUNKYARD_CONVINCE_RETURN_TO_MS,
                (MyTextsWrapperEnum.JUNKYARD_CONVINCE_RETURN_TO_MS_Description),
                null,
                this,
                new MyMissionID[] { MyMissionID.JUNKYARD_CONVINCE_BR_FIGHT },
                new MyMissionLocation(baseSector, MyMissionLocation.MADELYN_HANGAR),
                radiusOverride: 300f
                )
                {
                    SaveOnSuccess = true,
                    SuccessDialogId = MyDialogueEnum.JUNKYARD_CONVINCE_1700_FINALE,
                    HudName = MyTextsWrapperEnum.HudMadelynsSapho
                };
            m_objectives.Add(m_objective13FlyToMS);
            #endregion      

            m_spawns.AddRange(m_killWavesSecond1);
            m_spawns.AddRange(m_killWavesSecond2);
            m_spawns.AddRange(m_killWavesSecond3);
            m_spawns.AddRange(m_killWavesSecond4);
        }