state("BadWay")
{
    int Gameplay: 0x45901B4;
    int LevelID: 0x4860300;
    int Autostart: 0x458F420, 0x20, 0x3D4;
}

init
{
    vars.Splits = new HashSet<string>();

    switch (modules[0].ModuleMemorySize)
    {
        case 0x4F46000: break;
        default:
        {
        dynamic cmp = timer.Run.AutoSplitter != null
            ? timer.Run.AutoSplitter.Component
            : timer.Layout.Components.First(c => c.GetType().Name == "ASLComponent");

        cmp.Script.GetType().GetField("_game", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(cmp.Script, null);
        return;
        }
    }
}

startup
{
    settings.Add("BW", true, "Bad Way");
        settings.Add("LS", true, "Level Splits", "BW");
            settings.Add("ID2", true, "Unexpected Things", "LS");
            settings.Add("ID3", true, "Treasure of Mansa Musa", "LS");
            settings.Add("ID4", true, "Carlos' Prisoner", "LS");
            settings.Add("ID5", true, "Lost in The Amazon Jungle", "LS");
            settings.Add("ID6", true, "Chasing The Map", "LS");
            settings.Add("ID7", true, "Stowaway", "LS");
            settings.Add("ID8", true, "Nice Day", "LS");
            settings.Add("ID9", true, "Pirates Island", "LS");
            settings.Add("ID10", true, "Weeping Angels", "LS");
            settings.Add("ID11", true, "Lost Treasure", "LS");
}

isLoading
{
    return current.Gameplay == 262144;
}

start
{
    return current.Autostart == 0 && old.Autostart != 0;
}

onStart
{
    timer.IsGameTimePaused = true;
    vars.Splits.Clear();
    vars.LevelHelper = 0;
}

update
{
    if(current.LevelID == old.LevelID + 1)
    {
        vars.LevelHelper++;
    }
}

split
{
    if(current.LevelID != old.LevelID && !vars.Splits.Contains("ID" + vars.LevelHelper.ToString()))
    {
        return settings["ID" + vars.LevelHelper.ToString()] && vars.Splits.Add("ID" + vars.LevelHelper.ToString());
    }
}

exit
{
    timer.IsGameTimePaused = true;
}