// Original by Frostidllo // Updated by FlamingLazer, Biksel state("LEGOPirates") { bool loading: 0xA171A4; bool head: 0x00B57874, 0xBB8; bool roomTransition: 0x00B7BCC0, 0xC, 0x50; int roomId: 0xB791B4; int redHatCount: 0xB7DBFC; } startup { settings.Add("split_save", false, "Split on saving (old, Standard)"); settings.Add("split_nosave", true, "Split on loading screen after level (N0CUT5)"); settings.Add("split_room", false, "Split on room transitions"); settings.Add("redhatrush", false, "Red Hat Rush:"); settings.Add("start_redhat", false, "Start on loading into hub", "redhatrush"); settings.Add("split_redhat", false, "Split on hub room transitions", "redhatrush"); settings.Add("split_redhat_end", false, "Split on collecting 20 Red Hats", "redhatrush"); //midtros, opening cutscenes, etc that we want to skip on roomsplitting vars.skipRooms = new List<int>() {11,14,21,31,35,36,42,47,52,54,59,60,66,70,74,81,87,96,101,106,107,109,115,120,122,123,133,136,142,148,149,153,156,159,57,438,58,93,95,165,19,24,28,37,38,45,51,140,144,146,151,157,161,163,59,64,71,79,85,90,91,99,113,118}; vars.loadingScreens = new List<int> {2,20,29,46,65,72,80,86,100,108,114,119,124,147,152,158}; // For splitting nocut vars.exceptionRooms = new List<int>() {144}; //144 only split first time, 31 and 74 split on the second time vars.splitRooms = new List<int>(); vars.count = 0; vars.count2 = 0; //Specifically for 4-5 Midtro } isLoading { return current.loading; } update { if (old.roomId != current.roomId) { if (vars.exceptionRooms.Contains(current.roomId)) vars.count++; if (current.roomId == 146) vars.count = 0; // Safe to reset to 0, used for 144 } } start { return settings["start_redhat"] && old.roomId == 439 && current.roomId == 2; } onStart { vars.count = 0; vars.count2 = 0; vars.splitRooms = new List<int>(); } split { return (settings["split_save"] && current.head && !old.head) || (settings["split_nosave"] && old.roomId != current.roomId && vars.loadingScreens.Contains(current.roomId) && (old.roomId != 4)) || (settings["split_nosave"] && old.roomId != current.roomId && (current.roomId == 39 || current.roomId == 144) && !vars.splitRooms.Contains(current.roomId)) || (settings["split_room"] && old.roomId != current.roomId && !vars.exceptionRooms.Contains(current.roomId) && !vars.skipRooms.Contains(current.roomId) && old.roomId != 161 && current.roomId != 161) || (settings["split_room"] && old.roomId == 32 && current.roomId == 31 && !vars.splitRooms.Contains(current.roomId))|| (settings["split_room"] && old.roomId == 75 && current.roomId == 74 && !vars.splitRooms.Contains(current.roomId))|| (settings["split_room"] && old.roomId != current.roomId && current.roomId == 144 && vars.count < 1) || (settings["split_room"] && old.roomId == 160 && current.roomId == 161) || (settings["split_room"] && old.roomId == 161 && current.roomId == 162 && vars.count2 == 0) || (settings["split_redhat"] && old.roomTransition && !current.roomTransition) || (settings["split_redhat_end"] && old.redHatCount == 19 && current.redHatCount == 20); } onSplit { vars.splitRooms.Add(current.roomId); if (current.roomId == 31 || current.roomId == 74) vars.count = 0; if (current.roomId == 162) vars.count2 = 1; } exit { timer.IsGameTimePaused = false; }