state("DetroitBecomeHuman")
{
    byte Loading: "DetroitBecomeHuman.exe", 0x02A15610, 0x440, 0x10, 0x430, 0x2C8, 0x8;
    string38 CurrentGameState: "DetroitBecomeHuman.exe", 0x02B43EC8, 0xB0;
}

startup
{
    vars.chapters = new Dictionary<string, string> {
        {"0101 Hostage", "The Hostage"},
        {"0101K Alice - Part 1 _Sav Shop_", "Openning"},
        {"0101M The Painter - District", "Shades of Color"},
        {"0102K Alice - Part 2 _Todd House_", "A New Home"},
        {"0102M The Painter - Carl House", "The Painter"},
        {"0201C Teammates", "Partners"},
        {"0201K Dark Night", "Stormy Night"},
        {"0201M Broken", "Broken"},
        {"0401C The Interrogation", "The Interrogation"},
        {"0301K Fugitives", "Fugitives"},
        {"0301M Mass Grave", "From the Dead"},
        {"0301C Police Works", "Waiting for Hank…"},
        {"0401K On The Run", "On the Run"},
        {"0501M Jericho", "Jericho"},
        {"0501C The Nest", "The Nest"},
        {"0601M Time To Decide", "Time to Decide"},
        {"0501K Zlatko", "Zlatko"},
        {"0601C Russian Roulette", "Russian Roulette"},
        {"0602M Spare Parts", "Spare Parts"},
        {"0601C Eden Club", "The Eden Club"},
        {"0701K Fun fair", "The Pirates’ Cove"},
        {"0801C The vault ambassador bridge", "The Bridge"},
        {"0703M Big Screen Building", "The Stratford Tower"},
        {"0901C Back To Big Screen Food Truck", "Public Enemy"},
        {"0801K A place to hide", "Midnight Train"},
        {"0801M Night Of The Long Knives Jericho", "Capitol Park"},
        {"1101C Meet Kamski", "Meet Kamski"},
        {"1001M We Are People", "Freedom March"},
        {"1201C Lockers", "Last Chance, Connor"},
        {"1202C Lockers", "Last Chance, Connor (Any%)"},
        {"02A Crossroads", "Crossroads"},
        {"03A Night Of The Soul", "Night of the Soul"},
        {"04A Final", "Battle for Detroit"}
    };
    foreach (var tag in vars.chapters) {
        settings.Add(tag.Key, true, tag.Value);
        }

    // This is to check if you have Compare Against -> Real Time instead of Game Time
        if (timer.CurrentTimingMethod == TimingMethod.RealTime)
    {
        var mbox = MessageBox.Show(
            "Removing loads from Detroit: Become Human requires comparing against Game Time.\nWould you like to switch to it?",
            "LiveSplit | Detroit: Become Human",
            MessageBoxButtons.YesNo);

        if (mbox == DialogResult.Yes)
            timer.CurrentTimingMethod = TimingMethod.GameTime;
    }
}


start
{
    return (current.CurrentGameState == "0101 Hostage" && old.CurrentGameState == "MENU");
}

split
{
    return (current.CurrentGameState != old.CurrentGameState) && (old.CurrentGameState != "MENU")
    && settings[current.CurrentGameState];
}

isLoading
{
    return (current.Loading == 1);
}

exit
{
    timer.IsGameTimePaused = true;
}