Beispiel #1
0
        void Modify_RCF(string path)
        {
            string path_extr = basePath + @"cml_extr\";

            RCF_Manager.Extract(basePath + path, path_extr);

            ModCrates.InstallLayerMods(EnabledModCrates, path_extr, 1);

            CTTR_Settings.ParseSettings(path_extr);

            if (Option_RandCharacters.Enabled)
            {
                CTTR_Randomizers.Randomize_Characters(path_extr, randChars);
            }

            /*
             * if (GetOption(RandomizeHubs))
             * {
             *  CTTR_Randomizers.Randomize_Hubs(path_extr, randHubs, randGems);
             * }
             */
            if (Option_RandTrackEntrances.Enabled)
            {
                CTTR_Randomizers.Randomize_Tracks(path_extr, randTracks);
            }
            if (Option_RandMinigames.Enabled)
            {
                CTTR_Randomizers.Randomize_Minigames(path_extr, randMinigames);
            }
            if (Option_RandRaceLaps.Enabled)
            {
                CTTR_Randomizers.Randomize_Race_Laps(path_extr, randLaps);
            }

            /*
             * if (GetOption(RandomizeBattleKOs))
             * {
             *  CTTR_Randomizers.Randomize_Battle_KOs(path_extr, randKOs);
             * }
             */
            if (Option_NoSequenceBreaks.Enabled)
            {
                CTTR_Mods.Mod_PreventSequenceBreaks(path_extr);
            }
            CTTR_Mods.Mod_EditCredits(basePath);

            RCF_Manager.Pack(basePath + path, path_extr);
        }
Beispiel #2
0
        public override void StartModProcess()
        {
            Random rand = new Random(ModLoaderGlobals.RandomizerSeed);

            string path_RCF_frontend = "DEFAULT.RCF";

            basePath = ConsolePipeline.ExtractedPath;
            RCF_Manager.cachedRCF = null;

            if (ConsolePipeline.Metadata.Console == ConsoleMode.WII)
            {
                path_RCF_frontend = "default.rcf";
            }
            else if (ConsolePipeline.Metadata.Console == ConsoleMode.PSP)
            {
                path_RCF_frontend = "default.rcf";
            }
            else if (ConsolePipeline.Metadata.Console == ConsoleMode.XBOX360)
            {
                path_RCF_frontend = "default.rcf";
            }

            string path_extr = basePath + @"cml_extr\";

            RCF_Manager.Extract(basePath + path_RCF_frontend, path_extr);

            ModCrates.InstallLayerMods(EnabledModCrates, path_extr, 1);

            if (Option_TestMod.Enabled)
            {
                // Proof of concept mod increasing gameplay FOV in Episode 1
                string[] frontend_lines = File.ReadAllLines(path_extr + @"levels\L1_E1\cameraoverrides.blua");
                frontend_lines[6]  = "cameraManager:SetCameraVolumeFOV( 0, 90.000000 )";
                frontend_lines[11] = "cameraManager:SetCameraVolumeFOV( 2, 90.000000 )";
                frontend_lines[14] = "cameraManager:SetCameraVolumeFOV( 3, 90.000000 )";
                frontend_lines[68] = "cameraManager:SetCameraVolumeFOV( 78, 90.000000 )";
                frontend_lines[71] = "cameraManager:SetCameraVolumeFOV( 79, 90.000000 )";
                frontend_lines[73] = "cameraManager:SetCameraVolumeFOV( 80, 90.000000 )";
                frontend_lines[76] = "cameraManager:SetCameraVolumeFOV( 81, 90.000000 )";
                frontend_lines[79] = "cameraManager:SetCameraVolumeFOV( 82, 90.000000 )";
                frontend_lines[81] = "cameraManager:SetCameraVolumeFOV( 83, 90.000000 )";
                frontend_lines[83] = "cameraManager:SetCameraVolumeFOV( 84, 90.000000 )";
                frontend_lines[85] = "cameraManager:SetCameraVolumeFOV( 85, 90.000000 )";
                frontend_lines[87] = "cameraManager:SetCameraVolumeFOV( 86, 90.000000 )";
                frontend_lines[89] = "cameraManager:SetCameraVolumeFOV( 87, 90.000000 )";
                frontend_lines[91] = "cameraManager:SetCameraVolumeFOV( 88, 90.000000 )";
                frontend_lines[94] = "cameraManager:SetCameraVolumeFOV( 89, 90.000000 )";
                frontend_lines[97] = "cameraManager:SetCameraVolumeFOV( 90, 90.000000 )";
                File.WriteAllLines(path_extr + @"levels\L1_E1\cameraoverrides.blua", frontend_lines);
            }

            if (Option_RandEpisodeOrder.Enabled)
            {
                List <int> LevelsToRand = new List <int>();
                for (int i = 0; i < EpisodeFolderNames.Count; i++)
                {
                    LevelsToRand.Add(i);
                    Directory.Move(path_extr + @"levels\" + EpisodeFolderNames[i], path_extr + @"levels\" + "level" + i);
                }

                List <int> LevelsRand = new List <int>();
                for (int i = 0; i < EpisodeFolderNames.Count; i++)
                {
                    int r = rand.Next(LevelsToRand.Count);
                    LevelsRand.Add(LevelsToRand[r]);
                    LevelsToRand.RemoveAt(r);
                }

                for (int i = 0; i < EpisodeFolderNames.Count; i++)
                {
                    Directory.Move(path_extr + @"levels\" + "level" + i, path_extr + @"levels\" + EpisodeFolderNames[LevelsRand[i]]);
                }
            }

            RCF_Manager.Pack(basePath + path_RCF_frontend, path_extr);
        }
Beispiel #3
0
        void EditDefaultAndCommon()
        {
            randChars = new List <int>();
            if (Option_RandCharacters.Enabled)
            {
                int maxPlayableCharacters = 2;

                List <int> possibleChars = new List <int>();

                for (int i = 0; i < 8; i++)
                {
                    possibleChars.Add(i);
                }

                for (int i = 0; i < maxPlayableCharacters; i++)
                {
                    int targetChar = possibleChars[randState.Next(0, possibleChars.Count)];
                    randChars.Add(targetChar);
                    possibleChars.Remove(targetChar);
                }
            }
            randHubs = new List <int>();
            randGems = new List <int>();

            /*
             * if (GetOption(RandomizeHubs))
             * {
             *  List<int> possibleHubs = new List<int>();
             *
             *  for (int i = 1; i < 6; i++)
             *  {
             *      possibleHubs.Add(i);
             *  }
             *
             *  for (int i = 0; i < 5; i++)
             *  {
             *      int targetHub = possibleHubs[randState.Next(0, possibleHubs.Count)];
             *      randHubs.Add(targetHub);
             *      possibleHubs.Remove(targetHub);
             *  }
             *  List<int> possibleGems = new List<int>();
             *
             *  possibleGems.Add(0);
             *  possibleGems.Add(1);
             *  possibleGems.Add(2);
             *  possibleGems.Add(4);
             *  possibleGems.Add(5);
             *  for (int i = 0; i < 5; i++)
             *  {
             *      int targetGem = possibleGems[randState.Next(0, possibleGems.Count)];
             *      randGems.Add(targetGem);
             *      possibleGems.Remove(targetGem);
             *      if (i == 2)
             *      {
             *          randGems.Add(3);
             *      }
             *  }
             * }
             */
            randTracks    = new List <int>();
            randMinigames = new List <int>();
            if (Option_RandTrackEntrances.Enabled)
            {
                List <int> possibleTracks = new List <int>();

                for (int i = 0; i < 15; i++)
                {
                    possibleTracks.Add(i);
                }

                for (int i = 0; i < 15; i++)
                {
                    int targetTrack = possibleTracks[randState.Next(0, possibleTracks.Count)];
                    randTracks.Add(targetTrack);
                    possibleTracks.Remove(targetTrack);
                }
                List <int> possibleMinigames = new List <int>();

                for (int i = 0; i < 8; i++)
                {
                    possibleMinigames.Add(i);
                }

                for (int i = 0; i < 8; i++)
                {
                    int targetMinigame = possibleMinigames[randState.Next(0, possibleMinigames.Count)];
                    randMinigames.Add(targetMinigame);
                    possibleMinigames.Remove(targetMinigame);
                }
            }
            randLaps = new List <int>();
            if (Option_RandRaceLaps.Enabled)
            {
                for (int i = 0; i < 15; i++)
                {
                    if (i == 12) // Rings of Uranus
                    {
                        randLaps.Add(randState.Next(3, 13));
                    }
                    else
                    {
                        randLaps.Add(randState.Next(1, 7));
                    }
                }
            }
            randKOs = new List <int>();

            /*
             * if (GetOption(RandomizeBattleKOs))
             * {
             *  for (int i = 0; i < 5; i++)
             *  {
             *      randKOs.Add(randState.Next(5, 20));
             *  }
             * }
             */

            List <string> all_RCF = new List <string> {
                path_RCF_default,
                path_RCF_common,
                path_RCF_frontend,
                path_RCF_onfoot0,
                path_RCF_onfoot1,
                path_RCF_onfoot2,
                path_RCF_onfoot3,
                path_RCF_onfoot4,
                path_RCF_onfoot5,
                path_RCF_onfoot6,
                path_RCF_onfoot7,
                path_RCF_advent1,
                path_RCF_advent2,
                path_RCF_advent3,
                path_RCF_adventa,
                path_RCF_dino1,
                path_RCF_dino2,
                path_RCF_dino3,
                path_RCF_dinoa,
                path_RCF_egypt1,
                path_RCF_egypt2,
                path_RCF_egypt3,
                path_RCF_egypta,
                path_RCF_fairy1,
                path_RCF_fairy2,
                path_RCF_fairy3,
                path_RCF_fairys,
                path_RCF_solar1,
                path_RCF_solar2,
                path_RCF_solar3,
                path_RCF_solars,
                path_RCF_0,
                path_RCF_1,
                path_RCF_2,
                path_RCF_3,
                path_RCF_4,
                path_RCF_5,
                path_RCF_6,
                //path_RCF_sound,
                //path_RCF_english,
                //path_RCF_movies,
            };

            if (ModCrates.HasLayerModsActive(EnabledModCrates, 1)) // these take forever, so only if they're needed
            {
                all_RCF.Add(path_RCF_movies);
                all_RCF.Add(path_RCF_english);
                all_RCF.Add(path_RCF_sound);
            }

            for (int i = 0; i < all_RCF.Count; i++)
            {
                if (all_RCF[i] != "")
                {
                    Modify_RCF(all_RCF[i]);
                }
            }
        }
Beispiel #4
0
        void ModProcess()
        {
            Random rand = new Random(ModLoaderGlobals.RandomizerSeed);

            string path_extr = ConsolePipeline.ExtractedPath + @"BIGFILE\";

            ModCrates.InstallLayerMods(EnabledModCrates, path_extr, 1);

            if ((Option_RandTracks.Enabled || Option_RandTracks101.Enabled) && Directory.Exists(path_extr + @"levels\tracks\island1"))
            {
                List <int> LevelInd  = new List <int>();
                List <int> LevelRand = new List <int>();
                int        maxLevel  = TrackFolderNames.Count;
                if (Option_RandTracks101.Enabled)
                {
                    maxLevel -= 2;
                }

                for (int i = 0; i < maxLevel; i++)
                {
                    Directory.Move(path_extr + @"levels\tracks\" + TrackFolderNames[i], path_extr + @"levels\tracks\level" + i);
                    LevelInd.Add(i);
                }

                while (LevelInd.Count > 0)
                {
                    int r = rand.Next(LevelInd.Count);
                    LevelRand.Add(LevelInd[r]);
                    LevelInd.RemoveAt(r);
                }

                for (int i = 0; i < LevelRand.Count; i++)
                {
                    Directory.Move(path_extr + @"levels\tracks\level" + i, path_extr + @"levels\tracks\" + TrackFolderNames[LevelRand[i]]);
                }
            }

            LNG lng = new LNG(path_extr + @"lang\en.lng");

            string[] lang_lines = File.ReadAllLines(path_extr + @"lang\en.txt", System.Text.Encoding.Default);
            for (int i = 0; i < lang_lines.Length; i++)
            {
                if (lang_lines[i].Contains("LOADING.."))
                {
                    lang_lines[i] = "CML " + ModLoaderGlobals.ProgramVersion + "|" + "SEED: " + ModLoaderGlobals.RandomizerSeed;
                }
            }
            File.WriteAllLines(path_extr + @"lang\en.txt", lang_lines, System.Text.Encoding.Default);
            lng.ConvertTXT(path_extr + @"lang\en.txt");
            File.Delete(path_extr + @"lang\en.txt");

            if (File.Exists(path_extr + @"lang\en2.lng"))
            {
                LNG      lng1        = new LNG(path_extr + @"lang\en2.lng");
                string[] lang_lines1 = File.ReadAllLines(path_extr + @"lang\en2.txt", System.Text.Encoding.Default);
                for (int i = 0; i < lang_lines1.Length; i++)
                {
                    if (lang_lines[i].Contains("LOADING.."))
                    {
                        lang_lines[i] = "CML " + ModLoaderGlobals.ProgramVersion + "|" + "SEED: " + ModLoaderGlobals.RandomizerSeed;
                    }
                }
                File.WriteAllLines(path_extr + @"lang\en2.txt", lang_lines1, System.Text.Encoding.Default);
                lng1.ConvertTXT(path_extr + @"lang\en2.txt");
                File.Delete(path_extr + @"lang\en2.txt");
            }

            EndModProcess();
        }