Ejemplo n.º 1
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);
        }
        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;
        }
Ejemplo n.º 3
0
        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
        }
Ejemplo n.º 4
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);
        }
Ejemplo n.º 5
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);
        }
Ejemplo n.º 6
0
        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
        }
Ejemplo n.º 7
0
        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 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);
        }