state("MuseDash") { } startup { Assembly.Load(File.ReadAllBytes("Components/asl-help")).CreateInstance("Unity"); vars.Helper.GameName = "Muse Dash"; vars.Helper.LoadSceneManager = true; vars.Helper.AlertLoadless(); settings.Add("MD", true, "Muse Dash"); settings.Add("SongNo", true, "Split upon completing number of songs", "SongNo"); settings.Add("10Songs", true, "10 Songs Completed", "SongNo"); settings.Add("20Songs", true, "20 Songs Completed", "SongNo"); settings.Add("30Songs", true, "30 Songs Completed", "SongNo"); settings.Add("40Songs", true, "40 Songs Completed", "SongNo"); settings.Add("50Songs", true, "50 Songs Completed", "SongNo"); settings.Add("Touhou", true, "Split upon completing Touhou number of songs", "MD"); settings.Add("7Songs", true, "7 Songs Completed", "Touhou"); settings.Add("8Songs", true, "8 Songs Completed", "Touhou"); settings.Add("15Songs", true, "30 Songs Completed", "Touhou"); settings.Add("22Songs", true, "40 Songs Completed", "Touhou"); } init { vars.Splits = new HashSet<string>(); vars.Helper.TryLoad = (Func<dynamic, bool>)(mono => { var gg = mono["GameGlobal"]; var gm = mono["GameMusic"]; vars.Helper["EndSong"] = gg.Make<bool>("gGameMusic", gm["m_IsEnd"]); return true; }); vars.SongCounter = 0; } update { current.ActiveScene = vars.Helper.Scenes.Active.Name ?? old.ActiveScene; if(current.EndSong && !old.EndSong) { vars.SongCounter++; } } onStart { vars.SongCounter = 0; } split { if(current.EndSong && !old.EndSong) { return settings[vars.SongCounter + "Songs"]; } } isLoading { return current.ActiveScene == "Loading"; }