public static void Log(object obj)
        {
            if (obj is AutoControlZoneScript)
            {
                AutoControlZoneScript aczs = obj as AutoControlZoneScript;

                if (aczs.inputSwitch != null)
                {
                    foreach (SwitchScript switchScript in aczs.inputSwitch)
                    {
                        MFPEditorUtils.Log("inputSwitch " + switchScript.transform.name);
                    }
                }

                if (aczs.forceOffSwitch != null)
                {
                    MFPEditorUtils.Log("forceOffSwitch " + aczs.forceOffSwitch.transform.name);
                }

                MFPEditorUtils.Log("forceInterruptPlayerOverride " + aczs.forceInteruptPlayerOverride.ToString());

                MFPEditorUtils.Log("enableOverrideOnEnter " + aczs.enableOverrideOnEnter.ToString());
                MFPEditorUtils.Log("disableOverrideWhenLeavingZone " + aczs.disableOverrideWhenLeavingZone.ToString());
                MFPEditorUtils.Log("disableOverrideAfterInteract " + aczs.disableOverrideAfterInteract.ToString());
                MFPEditorUtils.Log("disableOverrideAfterTime " + aczs.disableOverrideAfterTime.ToString());
                MFPEditorUtils.Log("disableOverrideTimer " + aczs.disableOverrideTimer.ToString());

                MFPEditorUtils.Log("");

                MFPEditorUtils.Log("reTrigger " + aczs.reTrigger.ToString());
                MFPEditorUtils.Log("triggerDelay " + aczs.triggerDelay.ToString());
                MFPEditorUtils.Log("triggerOnlyOnEnter " + aczs.triggerOnlyOnEnter.ToString());

                MFPEditorUtils.Log("");

                MFPEditorUtils.Log("setXMoveAmount " + aczs.setXMoveAmount.ToString());
                MFPEditorUtils.Log("xMoveAmount " + aczs.xMoveAmount.ToString());
                MFPEditorUtils.Log("crouch " + aczs.crouch.ToString());
                MFPEditorUtils.Log("jump " + aczs.jump.ToString());
                MFPEditorUtils.Log("dodge " + aczs.dodge.ToString());
                MFPEditorUtils.Log("interact " + aczs.interact.ToString());
                MFPEditorUtils.Log("slowMotion " + aczs.slowMotion.ToString());
                MFPEditorUtils.Log("disableSlowMotionOnExit " + aczs.disableSlowMotionOnExit.ToString());
                MFPEditorUtils.Log("reload " + aczs.reload.ToString());
                MFPEditorUtils.Log("fire " + aczs.fire.ToString());
                MFPEditorUtils.Log("secondaryFire " + aczs.secondaryFire.ToString());

                MFPEditorUtils.Log("");

                MFPEditorUtils.Log("setAim " + aczs.setAim.ToString());
                MFPEditorUtils.Log("aimPos " + aczs.aimPos.ToString());
                MFPEditorUtils.Log("secondaryAimPos " + aczs.secondaryAimPos.ToString());

                MFPEditorUtils.Log("");

                MFPEditorUtils.Log("weapon " + aczs.weapon.ToString());
            }
        }
        public static AutoControlZoneScript GenerateAutoControlZone(GameObject target, SwitchScript[] inputSwitch = null, bool enableOverrideOnEnter = true, bool disableOverrideWhenLeavingZone = true, bool disableOverrideAfterInteract = false, bool disableOverrideAfterTime = false, float disableOverrideTimer = 0, bool reTrigger = false, float triggerDelay = 0, bool triggerOnlyOnEnter = false, bool setXMoveAmount = false, float xMoveAmount = 0, bool crouch = false, bool jump = false, bool dodge = false, bool interact = false, bool slowMotion = false, bool disableSlowMotionOnExit = false, bool reload = false, bool fire = false, bool secondaryFire = false, bool setAim = false, Vector3 aimPos = default(Vector3), Vector3 secondaryAimPos = default(Vector3), int weapon = -1)
        {
            AutoControlZoneScript script = target.AddComponent <AutoControlZoneScript>();


            if (inputSwitch != null)
            {
                script.inputSwitch = inputSwitch;
            }
            else
            {
                script.inputSwitch = new SwitchScript[] { }
            };

            script.enableOverrideOnEnter          = enableOverrideOnEnter;
            script.disableOverrideWhenLeavingZone = disableOverrideWhenLeavingZone;
            script.disableOverrideAfterInteract   = disableOverrideAfterInteract;
            script.disableOverrideAfterTime       = disableOverrideAfterTime;
            script.disableOverrideTimer           = disableOverrideTimer;

            script.reTrigger          = reTrigger;
            script.triggerDelay       = triggerDelay;
            script.triggerOnlyOnEnter = triggerOnlyOnEnter;

            script.setXMoveAmount = setXMoveAmount;
            script.xMoveAmount    = xMoveAmount;

            script.crouch     = crouch;
            script.jump       = jump;
            script.dodge      = dodge;
            script.interact   = interact;
            script.slowMotion = slowMotion;
            script.disableSlowMotionOnExit = disableSlowMotionOnExit;
            script.reload        = reload;
            script.fire          = fire;
            script.secondaryFire = secondaryFire;

            script.setAim          = setAim;
            script.aimPos          = aimPos;
            script.secondaryAimPos = secondaryAimPos;

            script.weapon = weapon;

            return(script);
        }
    }
Exemplo n.º 3
0
        void PrepareLevelEntities()
        {
            if (GameObject.Find("MFPLevel/ActionMusicTrigger"))
            {
                GameObject.Find("MFPLevel/ActionMusicTrigger").AddComponent <CustomMusic>();
            }
            else
            {
                new GameObject().AddComponent <CustomMusic>();
            }

            LevelChangerScript lScript = GameObject.Find("MFPLevel/level_end").AddComponent <LevelChangerScript>();

            MFPEditorUtils.FixPlayerLoadout();

            switch (currentLevel)
            {
            case 1:

                MFPClassicAssets.player.health = 1f;

                PlayerScript playerScript = MFPClassicAssets.player;

                lScript.dontShowEndScreen = true;

                SpawnDoorScript door1 = RuntimeEntities.CreateEnemyDoor(GameObject.Find("MFPLevel/Door1").transform.position, 1);
                door1.GetComponent <BoxCollider>().enabled = false;


                for (int i = 1; i <= 4; i++)
                {
                    GameObject.Find("MFPLevel/SpeechTriggers/InstructionStopper" + i.ToString()).AddComponent <ClearInstructionsOnTrigger>();
                }

                GameObject.Find("Car_1").AddComponent <SwitchScript>();
                SwitchABMoveScript backgroundCar1_lv1 = GameObject.Find("Car_1").AddComponent <SwitchABMoveScript>();
                backgroundCar1_lv1.inputSwitch = new SwitchScript[] { };

                backgroundCar1_lv1.noInputSwitchAnimPause   = 166;
                backgroundCar1_lv1.animLengthInFrames       = 180;
                backgroundCar1_lv1.returnAnimLengthInFrames = 0.1f;
                backgroundCar1_lv1.movePos      = new Vector3(60, 0, 0);
                backgroundCar1_lv1.acceleration = 0.1f;

                GameObject.Find("Car_2").AddComponent <SwitchScript>();
                SwitchABMoveScript backgroundCar1_lv2 = GameObject.Find("Car_2").AddComponent <SwitchABMoveScript>();
                backgroundCar1_lv2.inputSwitch = new SwitchScript[] { };

                backgroundCar1_lv2.noInputSwitchAnimPause   = 100;
                backgroundCar1_lv2.animLengthInFrames       = 180;
                backgroundCar1_lv2.returnAnimLengthInFrames = 0.1f;
                backgroundCar1_lv2.movePos      = new Vector3(-60, 0, 0);
                backgroundCar1_lv2.acceleration = 0.1f;


                InstructionTextScript instructions1 = RuntimeEntities.CreateInstructionText(new GameObject(), new string[] { "in1", "in2" }, false, false, true);
                InstructionTextScript instructions2 = RuntimeEntities.CreateInstructionText(new GameObject(), new string[] { "instructionsJump" }, false, false, true);
                InstructionTextScript instructions3 = RuntimeEntities.CreateInstructionText(new GameObject(), new string[] { "instructionsShootPistol", "instructionsWeaponWheel", "instructionsKick" }, false, false, true);
                InstructionTextScript instructions4 = RuntimeEntities.CreateInstructionText(new GameObject(), new string[] { "instructionsWallJump1", "instructionsWallJump2" }, false, false, true);
                InstructionTextScript instructions5 = RuntimeEntities.CreateInstructionText(new GameObject(), new string[] { "instructionsRoll1", "instructionsRoll2" }, false, false, true);
                InstructionTextScript instructions6 = RuntimeEntities.CreateInstructionText(new GameObject(), new string[] { "instructionsFocus", "instructionsFlip1", "instructionsFlip2" }, false, false, true);

                GameObject speech_Level1Trigger1 = GameObject.Find("MFPLevel/SpeechTriggers/trigger1");
                GameObject speech_Level1Trigger2 = GameObject.Find("MFPLevel/SpeechTriggers/trigger2");
                GameObject speech_Level1Trigger3 = GameObject.Find("MFPLevel/SpeechTriggers/trigger3");
                GameObject speech_Level1Trigger4 = GameObject.Find("MFPLevel/SpeechTriggers/trigger4");
                GameObject speech_Level1Trigger5 = GameObject.Find("MFPLevel/SpeechTriggers/trigger5");
                GameObject speech_Level1Trigger6 = GameObject.Find("MFPLevel/SpeechTriggers/trigger6");

                GameObject instruction2CompletedSpeech = GameObject.Find("MFPLevel/SpeechTriggers/trigger1_1");

                GameObject tutorialThugAliveSpeech = GameObject.Find("MFPLevel/SpeechTriggers/thugIsAliveTrigger");

                GameObject speech_Level1Pedro  = RuntimeEntities.SpawnPedro(GameObject.Find("MFPLevel/Pedro").transform.position);
                GameObject speech_Level1Pedro2 = RuntimeEntities.SpawnPedro(GameObject.Find("MFPLevel/Pedro2").transform.position);
                GameObject speech_Level1Pedro3 = RuntimeEntities.SpawnPedro(GameObject.Find("MFPLevel/Pedro3").transform.position);
                GameObject speech_Level1Pedro4 = RuntimeEntities.SpawnPedro(GameObject.Find("MFPLevel/Pedro4").transform.position);
                // GameObject speech_Level1Pedro4_5 = RuntimeEntities.SpawnPedro(GameObject.Find("MFPLevel/Pedro4_5").transform.position);
                GameObject speech_Level1Pedro5 = RuntimeEntities.SpawnPedro(GameObject.Find("MFPLevel/Pedro5").transform.position);
                GameObject speech_Level1Pedro6 = RuntimeEntities.SpawnPedro(GameObject.Find("MFPLevel/Pedro6").transform.position);

                GameObject instruction2CompletedPedro = RuntimeEntities.SpawnPedro(GameObject.Find("MFPLevel/Pedro_a").transform.position);

                SpeechTriggerControllerScript speechScript1_lv1 = RuntimeEntities.GenerateSpeechScript(speech_Level1Trigger1, speech_Level1Pedro.transform, "Pedro", "pedro01_level1_MFPClassic", MFPClassicAssets.pedroSounds[UnityEngine.Random.Range(0, MFPClassicAssets.pedroSounds.Length)], true, speech_Level1Pedro);
                speech_Level1Trigger1.GetComponent <SpeechTriggerControllerScript>().triggerWithoutPlayer = true;

                speechScript1_lv1.triggerInstructionTextOnFinish = instructions1;


                SpeechTriggerControllerScript speechScript1_1_level1 = RuntimeEntities.GenerateSpeechScript(new GameObject(), speech_Level1Pedro.transform, "Pedro", "pedro01a_level1_MFPClassic", MFPClassicAssets.pedroSounds[UnityEngine.Random.Range(0, MFPClassicAssets.pedroSounds.Length)], false, speech_Level1Pedro);
                SpeechTriggerControllerScript speechScript1_2_level1 = RuntimeEntities.GenerateSpeechScript(instruction2CompletedSpeech, instruction2CompletedPedro.transform, "Pedro", "pedro01b_level1_MFPClassic", MFPClassicAssets.pedroSounds[UnityEngine.Random.Range(0, MFPClassicAssets.pedroSounds.Length)], false, instruction2CompletedPedro);
                speechScript1_2_level1.clearInstructionTextOnStart = true;

                ActivateSpeechOnInput tutorialTalker1 = new GameObject().AddComponent <ActivateSpeechOnInput>();
                tutorialTalker1.tracking = speechScript1_lv1;
                tutorialTalker1.target   = speechScript1_1_level1;

                SpeechTriggerControllerScript speechScript2_lv1 = RuntimeEntities.GenerateSpeechScript(speech_Level1Trigger2, speech_Level1Pedro2.transform, "Pedro", "pedro02_level1_MFPClassic", MFPClassicAssets.pedroSounds[UnityEngine.Random.Range(0, MFPClassicAssets.pedroSounds.Length)], true, speech_Level1Pedro2);
                speechScript2_lv1.clearInstructionTextOnStart    = true;
                speechScript2_lv1.triggerInstructionTextOnFinish = instructions2;

                GameObject.Find("MFPLevel/SpeechTriggers/SpeechStopper1").AddComponent <SpeechStopperScript>();

                SpeechTriggerControllerScript speechScript3_lv1 = RuntimeEntities.GenerateSpeechScript(speech_Level1Trigger3, speech_Level1Pedro3.transform, "Pedro", "pedro03_level1_MFPClassic", MFPClassicAssets.pedroSounds[UnityEngine.Random.Range(0, MFPClassicAssets.pedroSounds.Length)], true, speech_Level1Pedro3);

                speechScript3_lv1.triggerInstructionTextOnFinish = instructions3;

                door1.inputSwitch = new SwitchScript[] { speechScript3_lv1.GetComponent <SwitchScript>() };
                door1.standStill  = true;

                postKillSpeech = RuntimeEntities.GenerateSpeechScript(speech_Level1Trigger4, speech_Level1Pedro4.transform, "Pedro", "pedro04a_level1_MFPClassic", MFPClassicAssets.pedroSounds[UnityEngine.Random.Range(0, MFPClassicAssets.pedroSounds.Length)], true, speech_Level1Pedro4).GetComponent <SpeechTriggerScript>();
                postKillSpeech.GetComponent <SpeechTriggerControllerScript>().triggerInstructionTextOnFinish = instructions4;
                GameObject.Find("MFPLevel/SpeechTriggers/thugIsAliveTrigger").AddComponent <TutorialThugAliveOutcome>();

                SpeechTriggerControllerScript dontKillThugSpeech = RuntimeEntities.GenerateSpeechScript(tutorialThugAliveSpeech, speech_Level1Pedro4.transform, "Pedro", "pedro04d_level1_MFPClassic", MFPClassicAssets.pedroSounds[UnityEngine.Random.Range(0, MFPClassicAssets.pedroSounds.Length)], false, speech_Level1Pedro4);
                dontKillThugSpeech.GetComponent <SpeechTriggerScript>().clickToContinueDontFreeze = false;

                RuntimeEntities.GenerateSpeechScript(speech_Level1Trigger5, speech_Level1Pedro5.transform, "Pedro", "pedro05_level1_MFPClassic", MFPClassicAssets.pedroSounds[UnityEngine.Random.Range(0, MFPClassicAssets.pedroSounds.Length)], true, speech_Level1Pedro5).triggerInstructionTextOnFinish = instructions5;
                RuntimeEntities.GenerateSpeechScript(speech_Level1Trigger6, speech_Level1Pedro6.transform, "Pedro", "pedro06_level1_MFPClassic", MFPClassicAssets.pedroSounds[UnityEngine.Random.Range(0, MFPClassicAssets.pedroSounds.Length)], true, speech_Level1Pedro6).triggerInstructionTextOnFinish = instructions6;
                break;

            case 2:

                GameObject.FindObjectOfType <LevelChangerScript>().dontShowEndScreen = false;

                GameObject speech_Level2Trigger1 = GameObject.Find("MFPLevel/SpeechTriggers/trigger1");
                GameObject speech_Level2Pedro1   = RuntimeEntities.SpawnPedro(GameObject.Find("MFPLevel/Pedro").transform.position);

                // MFPClassicAssets.root.nrOfEnemiesTotal = enemies.Count / 2 - 6;

                enemies[0].standStill = true;

                enemies[1].playerDetectionRadius /= 1.5f;
                enemies[1].standStill             = true;

                enemies[3].standStill = true;
                enemies[3].faceRight  = false;

                enemies[4].playerDetectionRadius /= 1.5f;

                enemies[7].standStill = true;
                enemies[8].standStill = true;

                enemies[9].faceRight = false;

                enemies[11].standStill             = true;
                enemies[11].faceRight              = false;
                enemies[11].playerDetectionRadius *= 1.2f;
                enemies[11].standStillInHuntMode   = true;

                enemies[11].weapon = 6;
                enemies[11].disableWeaponPickup = true;

                RuntimeEntities.CreateChairEnemy(GameObject.Find("MFPLevel/WoodenChair/WoodenChair_0 (3)"), enemies[2], false);
                RuntimeEntities.CreateChairEnemy(GameObject.Find("MFPLevel/WoodenChair/WoodenChair_0 (1)"), enemies[4], false);

                RuntimeEntities.GenerateSpeechScript(speech_Level2Trigger1, speech_Level2Pedro1.transform, "Pedro", "pedro01_level2_MFPClassic", MFPClassicAssets.pedroSounds[UnityEngine.Random.Range(0, MFPClassicAssets.pedroSounds.Length)], true, speech_Level2Pedro1);
                break;


            case 3:

                SpawnDoorScript door1_level3  = RuntimeEntities.CreateEnemyDoor(GameObject.Find("MFPLevel/DoorSpawns/Door1").transform.position, 5);
                SpawnDoorScript door2_level3  = RuntimeEntities.CreateEnemyDoor(GameObject.Find("MFPLevel/DoorSpawns/Door2").transform.position, 5);
                SpawnDoorScript door3_level3  = RuntimeEntities.CreateEnemyDoor(GameObject.Find("MFPLevel/DoorSpawns/Door3").transform.position, 1);
                SpawnDoorScript door4_level3  = RuntimeEntities.CreateEnemyDoor(GameObject.Find("MFPLevel/DoorSpawns/Door4").transform.position, 1);
                SpawnDoorScript door5_level3  = RuntimeEntities.CreateEnemyDoor(GameObject.Find("MFPLevel/DoorSpawns/Door5").transform.position, 1);
                SpawnDoorScript door6_level3  = RuntimeEntities.CreateEnemyDoor(GameObject.Find("MFPLevel/DoorSpawns/Door6").transform.position, 1);
                SpawnDoorScript door7_level3  = RuntimeEntities.CreateEnemyDoor(GameObject.Find("MFPLevel/DoorSpawns/Door7").transform.position, 1);
                SpawnDoorScript door8_level3  = RuntimeEntities.CreateEnemyDoor(GameObject.Find("MFPLevel/DoorSpawns/Door8").transform.position, 1);
                SpawnDoorScript door9_level3  = RuntimeEntities.CreateEnemyDoor(GameObject.Find("MFPLevel/DoorSpawns/Door9").transform.position, 1);
                SpawnDoorScript door10_level3 = RuntimeEntities.CreateEnemyDoor(GameObject.Find("MFPLevel/DoorSpawns/Door10").transform.position, 2);
                SpawnDoorScript door11_level3 = RuntimeEntities.CreateEnemyDoor(GameObject.Find("MFPLevel/DoorSpawns/Door11").transform.position, 2);

                door1_level3.attackAfterDoorSpawn = true;

                door2_level3.inputSwitch           = new SwitchScript[] { door1_level3.GetSwitch() };
                door2_level3.attackAfterDoorSpawn  = true;
                door3_level3.attackAfterDoorSpawn  = true;
                door4_level3.attackAfterDoorSpawn  = true;
                door5_level3.attackAfterDoorSpawn  = true;
                door6_level3.attackAfterDoorSpawn  = true;
                door7_level3.attackAfterDoorSpawn  = true;
                door8_level3.attackAfterDoorSpawn  = true;
                door9_level3.attackAfterDoorSpawn  = true;
                door10_level3.attackAfterDoorSpawn = true;
                door11_level3.attackAfterDoorSpawn = true;

                ElevatorScript elevatorTrigger = GameObject.Find("MFPLevel/ElevatorEntranceTrigger").gameObject.AddComponent <ElevatorScript>();
                elevatorTrigger.spawnDoors = new SpawnDoorScript[] { door1_level3, door2_level3 };

                SwitchABMoveScript elevator = GameObject.Find("MFPLevel/Elevator").AddComponent <SwitchABMoveScript>();

                elevator.gameObject.AddComponent <SwitchScript>();

                elevator.outputOnReachedEnd          = true;
                elevator.gameObject.transform.parent = null;


                elevator.inputSwitch        = new SwitchScript[] { elevatorTrigger.GetSwitch() };
                elevatorTrigger.inputSwitch = elevator.GetSwitch();

                elevator.movePos = new Vector3(0, -11.54f, 0);

                elevator.moveSpeed    = 0.005552662f;
                elevator.acceleration = 0.1f;

                elevator.animLengthInFrames = 180;



                SimpleDoorTrigger doorTrig = GameObject.Find("MFPLevel/DoorTrigger").AddComponent <SimpleDoorTrigger>();
                doorTrig.spawnDoors = new SpawnDoorScript[] { door10_level3, door11_level3 };

                enemies[0].standStill           = true;
                enemies[0].standStillInHuntMode = true;
                enemies[0].weapon    = 1;
                enemies[0].faceRight = false;

                enemies[1].standStill = true;
                enemies[1].faceRight  = false;

                enemies[2].weapon = 3;
                enemies[4].weapon = 3;
                enemies[5].weapon = 3;

                enemies[8].weapon = 3;
                enemies[9].weapon = 6;

                enemies[10].weapon = 3;

                enemies[12].standStill = true;
                enemies[12].faceRight  = false;

                enemies[14].faceRight = true;
                enemies[15].faceRight = false;

                SimpleTriggerZoneSwitchScript endElevatorTrigger = GameObject.Find("MFPLevel/EndElevatorTrigger").AddComponent <SimpleTriggerZoneSwitchScript>();
                endElevatorTrigger.gameObject.AddComponent <SwitchScript>();
                endElevatorTrigger.enableOnEnter = true;



                SwitchABMoveScript endElevator = GameObject.Find("MFPLevel/EndElevator").AddComponent <SwitchABMoveScript>();
                endElevator.gameObject.AddComponent <SwitchScript>();

                endElevator.inputSwitch = new SwitchScript[] { endElevatorTrigger.GetSwitch() };

                endElevator.movePos      = new Vector3(0, 10, 0);
                endElevator.moveSpeed    = 0.005552662f;
                endElevator.acceleration = 0.1f;

                endElevator.animLengthInFrames = 180;



                break;

            case 4:

                GameObject.FindObjectOfType <BackgroundCameraScript>().transform.position += new Vector3(0, 0, 50);

                SpawnDoorScript door1_level4  = RuntimeEntities.CreateEnemyDoor(GameObject.Find("MFPLevel/DoorSpawns/Door1").transform.position, 1);
                SpawnDoorScript door2_level4  = RuntimeEntities.CreateEnemyDoor(GameObject.Find("MFPLevel/DoorSpawns/Door2").transform.position, 1);
                SpawnDoorScript door3_level4  = RuntimeEntities.CreateEnemyDoor(GameObject.Find("MFPLevel/DoorSpawns/Door3").transform.position, 1);
                SpawnDoorScript door4_level4  = RuntimeEntities.CreateEnemyDoor(GameObject.Find("MFPLevel/DoorSpawns/Door4").transform.position, 1);
                SpawnDoorScript door5_level4  = RuntimeEntities.CreateEnemyDoor(GameObject.Find("MFPLevel/DoorSpawns/Door5").transform.position, 1);
                SpawnDoorScript door6_level4  = RuntimeEntities.CreateEnemyDoor(GameObject.Find("MFPLevel/DoorSpawns/Door6").transform.position, 1);
                SpawnDoorScript door7_level4  = RuntimeEntities.CreateEnemyDoor(GameObject.Find("MFPLevel/DoorSpawns/Door7").transform.position, 1);
                SpawnDoorScript door8_level4  = RuntimeEntities.CreateEnemyDoor(GameObject.Find("MFPLevel/DoorSpawns/Door8").transform.position, 2);
                SpawnDoorScript door9_level4  = RuntimeEntities.CreateEnemyDoor(GameObject.Find("MFPLevel/DoorSpawns/Door9").transform.position, 1);
                SpawnDoorScript door10_level4 = RuntimeEntities.CreateEnemyDoor(GameObject.Find("MFPLevel/DoorSpawns/Door10").transform.position, 1);
                SpawnDoorScript door11_level4 = RuntimeEntities.CreateEnemyDoor(GameObject.Find("MFPLevel/DoorSpawns/Door11").transform.position, 2);

                door10_level4.GetComponent <BoxCollider>().center -= new Vector3(0, 0, 50);
                door11_level4.GetComponent <BoxCollider>().center -= new Vector3(0, 0, 50);

                door1_level4.attackAfterDoorSpawn = true;
                door2_level4.attackAfterDoorSpawn = true;
                door3_level4.attackAfterDoorSpawn = true;
                door4_level4.attackAfterDoorSpawn = true;
                door5_level4.attackAfterDoorSpawn = true;

                door6_level4.attackAfterDoorSpawn = true;
                door6_level4.faceRight            = true;

                door7_level4.attackAfterDoorSpawn  = true;
                door8_level4.attackAfterDoorSpawn  = true;
                door9_level4.attackAfterDoorSpawn  = true;
                door10_level4.attackAfterDoorSpawn = true;
                door11_level4.attackAfterDoorSpawn = true;

                door2_level4.weapon  = 3;
                door4_level4.weapon  = 6;
                door7_level4.weapon  = 3;
                door10_level4.weapon = 3;

                door4_level4.inputSwitch = new SwitchScript[] { door3_level4.GetSwitch() };

                enemies[0].weapon    = 6;
                enemies[0].faceRight = false;

                enemies[2].weapon    = 3;
                enemies[2].faceRight = false;

                enemies[3].weapon    = 3;
                enemies[3].faceRight = false;

                enemies[4].weapon = 3;

                enemies[5].weapon    = 3;
                enemies[5].faceRight = false;

                enemies[7].faceRight = false;

                enemies[8].weapon     = 6;
                enemies[8].standStill = true;
                enemies[8].faceRight  = false;

                enemies[9].faceRight = false;

                enemies[12].faceRight = false;
                enemies[12].weapon    = 6;

                enemies[14].weapon               = 5;
                enemies[14].standStill           = true;
                enemies[14].standStillInHuntMode = true;
                enemies[14].faceRight            = false;
                enemies[14].disableWeaponPickup  = true;

                break;

            case 5:

                SpawnDoorScript door1_level5 = RuntimeEntities.CreateEnemyDoor(GameObject.Find("MFPLevel/DoorSpawns/Door1").transform.position, 1);
                SpawnDoorScript door2_level5 = RuntimeEntities.CreateEnemyDoor(GameObject.Find("MFPLevel/DoorSpawns/Door2").transform.position, 1);

                enemies[1].weapon = 3;
                enemies[2].weapon = 5;

                enemies[3].standStill = true;
                enemies[4].standStill = true;
                enemies[5].standStill = true;

                enemies[6].weapon = 5;

                enemies[7].faceRight = false;
                enemies[7].weapon    = 3;

                enemies[8].weapon = 6;

                enemies[9].weapon    = 6;
                enemies[9].faceRight = false;

                enemies[10].weapon = 5;
                enemies[11].weapon = 3;
                enemies[13].weapon = 5;

                enemies[14].weapon     = 3;
                enemies[14].standStill = true;

                enemies[15].weapon     = 3;
                enemies[15].standStill = true;

                enemies[16].weapon               = 5;
                enemies[16].standStill           = true;
                enemies[16].standStillInHuntMode = true;
                enemies[16].faceRight            = false;

                break;

            case 6:

                SpawnDoorScript door1_level6 = RuntimeEntities.CreateEnemyDoor(GameObject.Find("MFPLevel/DoorSpawns/Door1").transform.position, 1);
                SpawnDoorScript door2_level6 = RuntimeEntities.CreateEnemyDoor(GameObject.Find("MFPLevel/DoorSpawns/Door2").transform.position, 1);

                enemies[1].standStill           = true;
                enemies[1].standStillInHuntMode = true;

                enemies[3].faceRight            = true;
                enemies[3].standStillInHuntMode = true;
                enemies[3].standStill           = true;

                enemies[4].faceRight  = true;
                enemies[4].standStill = true;

                enemies[5].standStill = true;

                enemies[6].standStill           = true;
                enemies[6].standStillInHuntMode = true;
                enemies[6].faceRight            = true;

                enemies[13].standStill = true;

                break;

            case 8:

                MFPClassicAssets.root.dontAllowAutomaticFallDeath = true;
                // MFPClassicAssets.player.skyfall = true;

                Victor vic = GameObject.Find("MFPLevel/Victor").AddComponent <Victor>();
                vic.gameObject.AddComponent <VictorAnimEvents>();

                MFPClassicAssets.player.gameObject.AddComponent <PlayerWings>();

                SimpleTriggerZoneSwitchScript arenaZone = GameObject.Find("MFPLevel/ArenaBoundsActivator").AddComponent <SimpleTriggerZoneSwitchScript>();
                arenaZone.enableOnEnter = true;
                arenaZone.enableOnExit  = true;
                arenaZone.gameObject.AddComponent <SwitchScript>();

                InputSetActiveScript arenaSwitch = new GameObject().AddComponent <InputSetActiveScript>();
                arenaSwitch.activatableObjects = new GameObject[] { GameObject.Find("MFPLevel/Cube") };

                arenaSwitch.inputSwitch = arenaZone.GetSwitch();


                AutoControlZoneScript flyZone = RuntimeEntities.GenerateAutoControlZone(GameObject.Find("MFPLevel/AutoControlFly"));

                flyZone.jump = true;
                flyZone.enableOverrideOnEnter = true;
                flyZone.setAim = true;
                flyZone.aimPos = new Vector3(15, 0, 0);



                FinalBattleController finalBattle = new GameObject().AddComponent <FinalBattleController>();
                finalBattle.startSwitch = arenaZone.GetSwitch();

                new GameObject().AddComponent <CheckpointScript>().triggerFromSwitch = arenaZone.GetSwitch();


                GameObject.FindObjectOfType <CameraScript>().gameObject.AddComponent <SimpleTrackPlayer>();


                isBossLevel = true;

                //CHECKPOINT İÇİN AUTOCONTROLÜN HEMEN EN SONUNA TRİGGER KOY


                break;
            }


            List <Transform> enemiesRoot = new List <Transform>();

            foreach (EnemyScript enemy in enemies)
            {
                enemiesRoot.Add(enemy.transform);
            }

            MFPClassicAssets.root.allEnemies = enemiesRoot.ToArray();

            MFPEditorUtils.Log("Map loaded");
        }