state("mgs2_sse") { short Ray1: 0xB6DEC4, 0x740; short Ray2: 0xB6DEC4, 0xcae0; short Ray3: 0xB6DEC4, 0x18e80; short Ray4: 0xB6DEC4, 0x25220; short Ray5: 0xB6DEC4, 0x315c0; short Ray6: 0xB6DEC4, 0x3d960; short Ray7: 0xB6DEC4, 0x49d00; short Ray8: 0xB6DEC4, 0x560a0; short Ray9: 0xB6DEC4, 0x62440; short Ray10: 0xB6DEC4, 0x6e7e0; short Ray11: 0xB6DEC4, 0x7ab80; short Ray12: 0xB6DEC4, 0x86f20; short Ray13: 0xB6DEC4, 0x932c0; short Ray14: 0xB6DEC4, 0x9f660; short Ray15: 0xB6DEC4, 0xaba00; short Ray16: 0xB6DEC4, 0xb7da0; short Ray17: 0xB6DEC4, 0xc4140; short Ray18: 0xB6DEC4, 0xd04e0; short Ray19: 0xB6DEC4, 0xdc880; short Ray20: 0xB6DEC4, 0xe8c20; short Ray21: 0xB6DEC4, 0xf4fc0; short Ray22: 0xB6DEC4, 0x101360; short Ray23: 0xB6DEC4, 0x10d700; short Ray24: 0xB6DEC4, 0x119aa0; short Ray25: 0xB6DEC4, 0x125e40; short RaysTotalHealth: 0xAD4EA4, 0x54, 0x10, 0x10, 0x170, 0x7E0; string10 RoomCode: 0x601F34, 0x2C; int RoomTimer: 0x3E315E, 0x17; } gameTime { return TimeSpan.FromMilliseconds((current.RoomTimer) * 1000 / 60); } start { return ( (current.RoomCode == "w46a") && ((current.RaysTotalHealth % 1024) == 0) && (current.RoomTimer < 30) ); } reset { dynamic D = vars.D; if (current.RoomCode == "n_title") return true; if ( (current.RoomCode == "w46a") && ((current.RaysTotalHealth % 1024) == 0) && (current.RoomTimer < old.RoomTimer) ) return true; return false; } startup { vars.D = new ExpandoObject(); } update { dynamic D = vars.D; D.RaysCurrent = new short[] { current.Ray1, current.Ray2, current.Ray3, current.Ray4, current.Ray5, current.Ray6, current.Ray7, current.Ray8, current.Ray9, current.Ray10, current.Ray11, current.Ray12, current.Ray13, current.Ray14, current.Ray15, current.Ray16, current.Ray17, current.Ray18, current.Ray19, current.Ray20, current.Ray21, current.Ray22, current.Ray23, current.Ray24, current.Ray25 }; D.RaysOld = new short[] { old.Ray1, old.Ray2, old.Ray3, old.Ray4, old.Ray5, old.Ray6, old.Ray7, old.Ray8, old.Ray9, old.Ray10, old.Ray11, old.Ray12, old.Ray13, old.Ray14, old.Ray15, old.Ray16, old.Ray17, old.Ray18, old.Ray19, old.Ray20, old.Ray21, old.Ray22, old.Ray23, old.Ray24, old.Ray25 }; } split { dynamic D = vars.D; for (int i = 0; i < 25; i++) { if ( (D.RaysCurrent[i] != D.RaysOld[i]) && (D.RaysCurrent[i] <= 0) ) return true; } if ( (current.RaysTotalHealth != old.RaysTotalHealth) && (current.RaysTotalHealth <= 0) ) return true; return false; }