state("DisIsHonored-Win64-Shipping")
{
    string100 level : 0x04493CA0, 0xC38, 0x0, 0xF8, 0x28;
    bool load       : 0x3FDAED0;
    float temple    : 0x04497560, 0x258, 0x110, 0x560, 0x260, 0x54;
    byte screen     : 0x044804A0, 0x70, 0x35C; // Menu = 3, Stats, Death & Pause = 0
}

startup
{
    settings.Add("PoC", false, "(Testing only) Pause timer on Stats, Death and Pause screen.");
    vars.MM = "MainMenu";
    vars.Intro = "Tutorial_Gameplay";
    vars.Temple = "Temple_Gameplay";
    vars.levels = new Dictionary<string, int>()
    {
        {"MainMenu", 0},
        {"Tutorial_Gameplay", 1},
        {"BarracksInterior_Gameplay", 2},
        {"BarracksExterior_Gameplay", 3},
        {"CivilianMarketplace_Gameplay_Level", 4},
        {"City_Gameplay", 5},
        {"DockYard_Gameplay", 6},
        {"RatTunnel_Gameplay_Level", 7},
        {"DropAttack_Gameplay", 8},
        {"Temple_Gameplay", 9}
    };
    vars.end  = "Temple_Gameplay";
}

update
{
    //print("Debug = " + current.screen);
}

split
{
    if (current.level != old.level && vars.levels[current.level] > vars.levels[old.level])
        return true;

    // janky end split using distance from the objective label
    return (current.temple < 3.0 && old.temple > 3.0) && current.level == vars.Temple;
}

reset
{
    return (current.level == vars.Intro && old.level == vars.MM);
}

start
{
    return (old.level == vars.MM && current.level == vars.Intro);
}

isLoading
{
    return !current.load || settings["PoC"] && current.screen == 0;
}