Magical Quest starring Micky Mouse autosplitter

                Never    
C#
       
state("higan") {}
state("snes9x") {}
state("snes9x-x64") {}
state("emuhawk") {}

startup
{
    settings.Add("bosses", true, "Bosses");
}

init
{
    var states = new Dictionary<int, long>
    {
        { 10330112, 0x789414 },     //snes9x 1.52-rr
        { 7729152, 0x890EE4 },      //snes9x 1.54-rr
        { 5914624, 0x6EFBA4 },      //snes9x 1.53
        { 6909952, 0x140405EC8 },   //snes9x 1.53 (x64)
        { 6447104, 0x7410D4 },      //snes9x 1.54/1.54.1
        { 7946240, 0x1404DAF18 },   //snes9x 1.54/1.54.1 (x64)
        { 6602752, 0x762874 },      //snes9x 1.55
        { 8355840, 0x1405BFDB8 },   //snes9x 1.55 (x64)
        { 6856704, 0x78528C },      //snes9x 1.56/1.56.2
        { 9003008, 0x1405D8C68 },   //snes9x 1.56 (x64)
        { 6848512, 0x7811B4 },      //snes9x 1.56.1
        { 8945664, 0x1405C80A8 },   //snes9x 1.56.1 (x64)
        { 9015296, 0x1405D9298 },   //snes9x 1.56.2 (x64)
        { 6991872, 0x7A6EE4 },      //snes9x 1.57
        { 9048064, 0x1405ACC58 },   //snes9x 1.57 (x64)
        { 7000064, 0x7A7EE4 },      //snes9x 1.58
        { 9060352, 0x1405AE848 },   //snes9x 1.58 (x64)
        { 8953856, 0x975A54 },      //snes9x 1.59.2
        { 12537856, 0x1408D86F8 },  //snes9x 1.59.2 (x64)
        { 9027584, 0x94DB54 },      //snes9x 1.60
        { 12836864, 0x1408D8BE8 },  //snes9x 1.60 (x64)
        { 12509184, 0x915304 },     //higan v102
        { 13062144, 0x937324 },     //higan v103
        { 15859712, 0x952144 },     //higan v104
        { 16756736, 0x94F144 },     //higan v105tr1
        { 16019456, 0x94D144 },     //higan v106
        { 10096640, 0x72BECC },     //bsnes v107
        { 10338304, 0x762F2C },     //bsnes v107.1
        { 47230976, 0x765F2C },     //bsnes v107.2/107.3
        { 7061504, 0x36F11500240 }, //BizHawk 2.3
        { 7249920, 0x36F11500240 }, //BizHawk 2.3.1
    };

    long memoryOffset;
    if (states.TryGetValue(modules.First().ModuleMemorySize, out memoryOffset))
        if (memory.ProcessName.ToLower().Contains("snes9x"))
            memoryOffset = memory.ReadValue<int>((IntPtr)memoryOffset);

    if (memoryOffset == 0)
        throw new Exception("Memory not yet initialized.");

    vars.watchers = new MemoryWatcherList
    {
        new MemoryWatcher<byte>((IntPtr)memoryOffset + 0x2b1) { Name = "ownlife" },
        new MemoryWatcher<byte>((IntPtr)memoryOffset + 0x7c1) { Name = "enemylife1" },
        new MemoryWatcher<byte>((IntPtr)memoryOffset + 0x811) { Name = "enemylife2" },
        new MemoryWatcher<byte>((IntPtr)memoryOffset + 0x861) { Name = "enemylife3" },
        new MemoryWatcher<byte>((IntPtr)memoryOffset + 0x8b1) { Name = "enemylife4" },
        new MemoryWatcher<byte>((IntPtr)memoryOffset + 0x9f1) { Name = "enemylife5" },
        new MemoryWatcher<byte>((IntPtr)memoryOffset + 0xa41) { Name = "enemylife6" },
        new MemoryWatcher<byte>((IntPtr)memoryOffset + 0xe01) { Name = "enemylife7" },
    };
    vars.couldbefighting = 0;
    vars.isfighting = false;
}

update
{
    vars.watchers.UpdateAll(game);
}

start
{
    return vars.watchers["ownlife"].Old == 0 && vars.watchers["ownlife"].Current != 0;
}

reset
{

}

split
{
    if (vars.isfighting) {
        var Count255 = 0;
        var Count0 = 0;
        if (vars.watchers["enemylife1"].Current==255) { Count255++; } if (vars.watchers["enemylife1"].Current==0) { Count0++; }
        if (vars.watchers["enemylife2"].Current==255) { Count255++; } if (vars.watchers["enemylife2"].Current==0) { Count0++; }
        if (vars.watchers["enemylife3"].Current==255) { Count255++; } if (vars.watchers["enemylife3"].Current==0) { Count0++; }
        if (vars.watchers["enemylife4"].Current==255) { Count255++; } if (vars.watchers["enemylife4"].Current==0) { Count0++; }
        if (vars.watchers["enemylife5"].Current==255) { Count255++; } if (vars.watchers["enemylife5"].Current==0) { Count0++; }
        if (vars.watchers["enemylife6"].Current==255) { Count255++; } if (vars.watchers["enemylife6"].Current==0) { Count0++; }
        if (vars.watchers["enemylife7"].Current==255) { Count255++; } if (vars.watchers["enemylife7"].Current==0) { Count0++; }
        if (Count255 == 3 && Count0 == 4) {
            vars.isfighting = false;
            print ("Fight with fire boss is Over, Splitting.");
            return true;
        }
        var Enemy1 = settings["bosses"] && vars.watchers["enemylife1"].Current > 230 && vars.watchers["enemylife1"].Old < 20;
        var Enemy2 = settings["bosses"] && vars.watchers["enemylife2"].Current > 230 && vars.watchers["enemylife2"].Old < 20;
        var Enemy3 = settings["bosses"] && vars.watchers["enemylife3"].Current > 230 && vars.watchers["enemylife3"].Old < 20;
        var Enemy4 = settings["bosses"] && vars.watchers["enemylife4"].Current > 230 && vars.watchers["enemylife4"].Old < 20;
        var Enemy5 = settings["bosses"] && vars.watchers["enemylife5"].Current > 230 && vars.watchers["enemylife5"].Old < 20;
        var Enemy6 = settings["bosses"] && vars.watchers["enemylife6"].Current > 230 && vars.watchers["enemylife6"].Old < 20;
        var Enemy7 = settings["bosses"] && vars.watchers["enemylife7"].Current > 230 && vars.watchers["enemylife7"].Old < 20;
        if (Enemy1 || Enemy2 || Enemy3 || Enemy4 || Enemy5 || Enemy6 || Enemy7) {
            vars.isfighting = false;
            print ("Fight is Over, Splitting.");
            return true;
        }
        if (vars.watchers["ownlife"].Current == 0) {
            print ("Fight is over but player died, no split this time.");
            vars.isfighting = false;
            Thread.Sleep(7000);
        }
    } else {
        if (vars.couldbefighting==0) {
            if (vars.watchers["enemylife1"].Current > 32 && vars.watchers["enemylife1"].Current < 53) { vars.couldbefighting = 1; }
            if (vars.watchers["enemylife2"].Current > 32 && vars.watchers["enemylife2"].Current < 53) { vars.couldbefighting = 2; }
            if (vars.watchers["enemylife3"].Current > 32 && vars.watchers["enemylife3"].Current < 53) { vars.couldbefighting = 3; }
            if (vars.watchers["enemylife4"].Current > 32 && vars.watchers["enemylife4"].Current < 53) { vars.couldbefighting = 4; }
            if (vars.watchers["enemylife5"].Current > 32 && vars.watchers["enemylife5"].Current < 53) { vars.couldbefighting = 5; }
            if (vars.watchers["enemylife6"].Current > 32 && vars.watchers["enemylife6"].Current < 53) { vars.couldbefighting = 6; }
            if (vars.watchers["enemylife7"].Current > 32 && vars.watchers["enemylife7"].Current < 53) { vars.couldbefighting = 7; }
            if (vars.couldbefighting>0) {
                print ("Fight may be going on... watching...");
            }
        } else {
            if (vars.couldbefighting == 1 && vars.watchers["enemylife1"].Current > 15 && vars.watchers["enemylife1"].Current < 32) { vars.isfighting = true; }
            if (vars.couldbefighting == 2 && vars.watchers["enemylife2"].Current > 15 && vars.watchers["enemylife2"].Current < 32) { vars.isfighting = true; }
            if (vars.couldbefighting == 3 && vars.watchers["enemylife3"].Current > 15 && vars.watchers["enemylife3"].Current < 32) { vars.isfighting = true; }
            if (vars.couldbefighting == 4 && vars.watchers["enemylife4"].Current > 15 && vars.watchers["enemylife4"].Current < 32) { vars.isfighting = true; }
            if (vars.couldbefighting == 5 && vars.watchers["enemylife5"].Current > 15 && vars.watchers["enemylife5"].Current < 32) { vars.isfighting = true; }
            if (vars.couldbefighting == 6 && vars.watchers["enemylife6"].Current > 15 && vars.watchers["enemylife6"].Current < 32) { vars.isfighting = true; }
            if (vars.couldbefighting == 7 && vars.watchers["enemylife7"].Current > 15 && vars.watchers["enemylife7"].Current < 32) { vars.isfighting = true; }
            if (vars.isfighting) {
                print ("Fight is going on... Watching for boss death.");
                vars.couldbefighting = 0;
                return false;
            }
            if (vars.couldbefighting == 1 && vars.watchers["enemylife1"].Current == 0) { vars.couldbefighting = 0; }
            if (vars.couldbefighting == 2 && vars.watchers["enemylife2"].Current == 0) { vars.couldbefighting = 0; }
            if (vars.couldbefighting == 3 && vars.watchers["enemylife3"].Current == 0) { vars.couldbefighting = 0; }
            if (vars.couldbefighting == 4 && vars.watchers["enemylife4"].Current == 0) { vars.couldbefighting = 0; }
            if (vars.couldbefighting == 5 && vars.watchers["enemylife5"].Current == 0) { vars.couldbefighting = 0; }
            if (vars.couldbefighting == 6 && vars.watchers["enemylife6"].Current == 0) { vars.couldbefighting = 0; }
            if (vars.couldbefighting == 7 && vars.watchers["enemylife7"].Current == 0) { vars.couldbefighting = 0; }
            if (vars.couldbefighting==0) {
                print ("Fight was a fake, reverting back."+vars.couldbefighting);
            }
        }
    }
    return false;
}

Raw Text