improve Room Rush time limits (manually tested every single combination on every map)

This commit is contained in:
Gurge44 committed 2026-05-05 11:39:19 +02:00
1 parent 6a60788e82
commit 9146493ab4
7 files changed
+650 -140

No files matched your search

+49
View File
@@ -0,0 +1,49 @@
/*using System.Linq;
using System.Collections.Generic;
using System.Diagnostics;
using UnityEngine;
namespace EHR.Gamemodes;
public static class RRTimeTester
{
public static string HUDText;
public static System.Collections.IEnumerator DoTest()
{
var allRooms = ShipStatus.Instance.AllRooms.Select(x => x.RoomId).ToHashSet();
allRooms.Remove(SystemTypes.Hallway);
allRooms.Remove(SystemTypes.Outside);
if (SubmergedCompatibility.IsSubmerged()) allRooms.RemoveWhere(x => (byte)x > 135);
var map = RandomSpawn.SpawnMap.GetSpawnMap();
var stopwatch = new Stopwatch();
var mapName = Main.CurrentMap.ToString();
var doneCombos = new List<(SystemTypes, SystemTypes)>();
foreach (SystemTypes systemTypes in allRooms)
{
foreach (SystemTypes otherSystemTypes in allRooms)
{
if (systemTypes == otherSystemTypes || doneCombos.Exists(x => x.Item1 == systemTypes && x.Item2 == otherSystemTypes || x.Item1 == otherSystemTypes && x.Item2 == systemTypes)) continue;
string otherSystemTypesName = Translator.GetString(otherSystemTypes.ToString());
Redo:
HUDText = $"<#ffff00><size=200%>{otherSystemTypesName}</size></color>";
PlayerControl.LocalPlayer.TP(map.Positions.GetValueOrDefault(systemTypes, systemTypes.GetRoomClass().transform.position));
yield return new WaitForSeconds(0.5f);
while (PlayerControl.LocalPlayer.IsInRoom(systemTypes)) yield return null;
stopwatch.Restart();
while (PlayerControl.LocalPlayer.onLadder || PlayerControl.LocalPlayer.inMovingPlat || !PlayerControl.LocalPlayer.IsInRoom(otherSystemTypes))
{
HUDText = $"<size=200%>{otherSystemTypesName}</size>\n{stopwatch.Elapsed.TotalSeconds:N1}";
yield return null;
if (Input.GetKey(KeyCode.Backspace)) goto Redo;
}
stopwatch.Stop();
doneCombos.Add((systemTypes, otherSystemTypes));
File.AppendAllText($"./RRTestResults-{mapName}.txt", $"\n{systemTypes}-{otherSystemTypes}:{stopwatch.Elapsed.TotalSeconds + 1:N0}");
}
}
HUDText = "<#00ff00><size=200%>TEST COMPLETE</size></color>";
}
}*/
+581 -95
View File
@@ -13,7 +13,7 @@ namespace EHR.Gamemodes;
public static class RoomRush
{
private static OptionItem GlobalTimeMultiplier;
private static OptionItem GlobalTimeAddition;
private static OptionItem TimeWhenFirstTwoPlayersEnterRoom;
private static OptionItem VentTimes;
private static OptionItem DisplayRoomName;
@@ -40,83 +40,586 @@ public static class RoomRush
private static RandomSpawn.SpawnMap Map;
public static readonly Dictionary<MapNames, Dictionary<(SystemTypes, SystemTypes), int>> Multipliers = new()
// Minimum time needed to make the closest path between the two rooms with the worst possible conditions at 1.25x player speed
public static readonly Dictionary<MapNames, Dictionary<(SystemTypes, SystemTypes), int>> RawTimeNeeded = new()
{
[MapNames.Skeld] = new()
{
[(SystemTypes.Admin, SystemTypes.Weapons)] = 2,
[(SystemTypes.Admin, SystemTypes.Nav)] = 2,
[(SystemTypes.Admin, SystemTypes.Comms)] = 2,
[(SystemTypes.Admin, SystemTypes.Shields)] = 2,
[(SystemTypes.Admin, SystemTypes.LifeSupp)] = 4,
[(SystemTypes.Electrical, SystemTypes.MedBay)] = 3,
[(SystemTypes.Electrical, SystemTypes.Security)] = 3,
[(SystemTypes.Electrical, SystemTypes.LifeSupp)] = 2,
[(SystemTypes.MedBay, SystemTypes.Security)] = 3,
[(SystemTypes.Admin, SystemTypes.Security)] = 2,
[(SystemTypes.Security, SystemTypes.LifeSupp)] = 2,
[(SystemTypes.Cafeteria, SystemTypes.LifeSupp)] = 2,
[(SystemTypes.Storage, SystemTypes.Security)] = 2,
[(SystemTypes.Storage, SystemTypes.MedBay)] = 2
[(SystemTypes.Admin, SystemTypes.Cafeteria)] = 2,
[(SystemTypes.Admin, SystemTypes.Nav)] = 10,
[(SystemTypes.Admin, SystemTypes.Weapons)] = 6,
[(SystemTypes.Admin, SystemTypes.LifeSupp)] = 8,
[(SystemTypes.Admin, SystemTypes.Shields)] = 5,
[(SystemTypes.Admin, SystemTypes.Electrical)] = 6,
[(SystemTypes.Admin, SystemTypes.Reactor)] = 11,
[(SystemTypes.Admin, SystemTypes.Storage)] = 2,
[(SystemTypes.Admin, SystemTypes.LowerEngine)] = 8,
[(SystemTypes.Admin, SystemTypes.UpperEngine)] = 8,
[(SystemTypes.Admin, SystemTypes.Comms)] = 5,
[(SystemTypes.Admin, SystemTypes.Security)] = 11,
[(SystemTypes.Admin, SystemTypes.MedBay)] = 7,
[(SystemTypes.Cafeteria, SystemTypes.Nav)] = 5,
[(SystemTypes.Cafeteria, SystemTypes.Weapons)] = 1,
[(SystemTypes.Cafeteria, SystemTypes.LifeSupp)] = 4,
[(SystemTypes.Cafeteria, SystemTypes.Shields)] = 7,
[(SystemTypes.Cafeteria, SystemTypes.Electrical)] = 6,
[(SystemTypes.Cafeteria, SystemTypes.Reactor)] = 7,
[(SystemTypes.Cafeteria, SystemTypes.Storage)] = 2,
[(SystemTypes.Cafeteria, SystemTypes.LowerEngine)] = 7,
[(SystemTypes.Cafeteria, SystemTypes.UpperEngine)] = 4,
[(SystemTypes.Cafeteria, SystemTypes.Comms)] = 5,
[(SystemTypes.Cafeteria, SystemTypes.Security)] = 6,
[(SystemTypes.Cafeteria, SystemTypes.MedBay)] = 2,
[(SystemTypes.Nav, SystemTypes.Weapons)] = 3,
[(SystemTypes.Nav, SystemTypes.LifeSupp)] = 3,
[(SystemTypes.Nav, SystemTypes.Shields)] = 4,
[(SystemTypes.Nav, SystemTypes.Electrical)] = 11,
[(SystemTypes.Nav, SystemTypes.Reactor)] = 15,
[(SystemTypes.Nav, SystemTypes.Storage)] = 7,
[(SystemTypes.Nav, SystemTypes.LowerEngine)] = 13,
[(SystemTypes.Nav, SystemTypes.UpperEngine)] = 12,
[(SystemTypes.Nav, SystemTypes.Comms)] = 6,
[(SystemTypes.Nav, SystemTypes.Security)] = 15,
[(SystemTypes.Nav, SystemTypes.MedBay)] = 11,
[(SystemTypes.Weapons, SystemTypes.LifeSupp)] = 2,
[(SystemTypes.Weapons, SystemTypes.Shields)] = 5,
[(SystemTypes.Weapons, SystemTypes.Electrical)] = 10,
[(SystemTypes.Weapons, SystemTypes.Reactor)] = 11,
[(SystemTypes.Weapons, SystemTypes.Storage)] = 6,
[(SystemTypes.Weapons, SystemTypes.LowerEngine)] = 12,
[(SystemTypes.Weapons, SystemTypes.UpperEngine)] = 8,
[(SystemTypes.Weapons, SystemTypes.Comms)] = 7,
[(SystemTypes.Weapons, SystemTypes.Security)] = 11,
[(SystemTypes.Weapons, SystemTypes.MedBay)] = 7,
[(SystemTypes.LifeSupp, SystemTypes.Shields)] = 5,
[(SystemTypes.LifeSupp, SystemTypes.Electrical)] = 12,
[(SystemTypes.LifeSupp, SystemTypes.Reactor)] = 14,
[(SystemTypes.LifeSupp, SystemTypes.Storage)] = 7,
[(SystemTypes.LifeSupp, SystemTypes.LowerEngine)] = 14,
[(SystemTypes.LifeSupp, SystemTypes.UpperEngine)] = 10,
[(SystemTypes.LifeSupp, SystemTypes.Comms)] = 7,
[(SystemTypes.LifeSupp, SystemTypes.Security)] = 13,
[(SystemTypes.LifeSupp, SystemTypes.MedBay)] = 9,
[(SystemTypes.Shields, SystemTypes.Electrical)] = 7,
[(SystemTypes.Shields, SystemTypes.Reactor)] = 12,
[(SystemTypes.Shields, SystemTypes.Storage)] = 3,
[(SystemTypes.Shields, SystemTypes.LowerEngine)] = 9,
[(SystemTypes.Shields, SystemTypes.UpperEngine)] = 11,
[(SystemTypes.Shields, SystemTypes.Comms)] = 2,
[(SystemTypes.Shields, SystemTypes.Security)] = 12,
[(SystemTypes.Shields, SystemTypes.MedBay)] = 10,
[(SystemTypes.Electrical, SystemTypes.Reactor)] = 6,
[(SystemTypes.Electrical, SystemTypes.Storage)] = 2,
[(SystemTypes.Electrical, SystemTypes.LowerEngine)] = 3,
[(SystemTypes.Electrical, SystemTypes.UpperEngine)] = 7,
[(SystemTypes.Electrical, SystemTypes.Comms)] = 7,
[(SystemTypes.Electrical, SystemTypes.Security)] = 6,
[(SystemTypes.Electrical, SystemTypes.MedBay)] = 11,
[(SystemTypes.Reactor, SystemTypes.Storage)] = 7,
[(SystemTypes.Reactor, SystemTypes.LowerEngine)] = 3,
[(SystemTypes.Reactor, SystemTypes.UpperEngine)] = 3,
[(SystemTypes.Reactor, SystemTypes.Comms)] = 12,
[(SystemTypes.Reactor, SystemTypes.Security)] = 2,
[(SystemTypes.Reactor, SystemTypes.MedBay)] = 6,
[(SystemTypes.Storage, SystemTypes.LowerEngine)] = 5,
[(SystemTypes.Storage, SystemTypes.UpperEngine)] = 8,
[(SystemTypes.Storage, SystemTypes.Comms)] = 3,
[(SystemTypes.Storage, SystemTypes.Security)] = 8,
[(SystemTypes.Storage, SystemTypes.MedBay)] = 7,
[(SystemTypes.LowerEngine, SystemTypes.UpperEngine)] = 3,
[(SystemTypes.LowerEngine, SystemTypes.Comms)] = 9,
[(SystemTypes.LowerEngine, SystemTypes.Security)] = 3,
[(SystemTypes.LowerEngine, SystemTypes.MedBay)] = 7,
[(SystemTypes.UpperEngine, SystemTypes.Comms)] = 11,
[(SystemTypes.UpperEngine, SystemTypes.Security)] = 3,
[(SystemTypes.UpperEngine, SystemTypes.MedBay)] = 3,
[(SystemTypes.Comms, SystemTypes.Security)] = 12,
[(SystemTypes.Comms, SystemTypes.MedBay)] = 10,
[(SystemTypes.Security, SystemTypes.MedBay)] = 6
},
[MapNames.MiraHQ] = new()
{
[(SystemTypes.Launchpad, SystemTypes.Reactor)] = 2,
[(SystemTypes.Greenhouse, SystemTypes.Laboratory)] = 2,
[(SystemTypes.Office, SystemTypes.Laboratory)] = 2,
[(SystemTypes.Storage, SystemTypes.Comms)] = 4,
[(SystemTypes.Cafeteria, SystemTypes.Comms)] = 2,
[(SystemTypes.Balcony, SystemTypes.Comms)] = 2,
[(SystemTypes.Storage, SystemTypes.MedBay)] = 3,
[(SystemTypes.Cafeteria, SystemTypes.MedBay)] = 2,
[(SystemTypes.Balcony, SystemTypes.MedBay)] = 2,
[(SystemTypes.Storage, SystemTypes.LockerRoom)] = 2
[(SystemTypes.Decontamination, SystemTypes.Launchpad)] = 9,
[(SystemTypes.Decontamination, SystemTypes.Cafeteria)] = 8,
[(SystemTypes.Decontamination, SystemTypes.Storage)] = 11,
[(SystemTypes.Decontamination, SystemTypes.Reactor)] = 1,
[(SystemTypes.Decontamination, SystemTypes.Laboratory)] = 3,
[(SystemTypes.Decontamination, SystemTypes.LockerRoom)] = 1,
[(SystemTypes.Decontamination, SystemTypes.Admin)] = 9,
[(SystemTypes.Decontamination, SystemTypes.Office)] = 8,
[(SystemTypes.Decontamination, SystemTypes.Greenhouse)] = 9,
[(SystemTypes.Decontamination, SystemTypes.Comms)] = 4,
[(SystemTypes.Decontamination, SystemTypes.Balcony)] = 11,
[(SystemTypes.Decontamination, SystemTypes.MedBay)] = 4,
[(SystemTypes.Launchpad, SystemTypes.Cafeteria)] = 13,
[(SystemTypes.Launchpad, SystemTypes.Storage)] = 15,
[(SystemTypes.Launchpad, SystemTypes.Reactor)] = 13,
[(SystemTypes.Launchpad, SystemTypes.Laboratory)] = 13,
[(SystemTypes.Launchpad, SystemTypes.LockerRoom)] = 8,
[(SystemTypes.Launchpad, SystemTypes.Admin)] = 13,
[(SystemTypes.Launchpad, SystemTypes.Office)] = 13,
[(SystemTypes.Launchpad, SystemTypes.Greenhouse)] = 14,
[(SystemTypes.Launchpad, SystemTypes.Comms)] = 8,
[(SystemTypes.Launchpad, SystemTypes.Balcony)] = 15,
[(SystemTypes.Launchpad, SystemTypes.MedBay)] = 7,
[(SystemTypes.Cafeteria, SystemTypes.Storage)] = 1,
[(SystemTypes.Cafeteria, SystemTypes.Reactor)] = 12,
[(SystemTypes.Cafeteria, SystemTypes.Laboratory)] = 13,
[(SystemTypes.Cafeteria, SystemTypes.LockerRoom)] = 7,
[(SystemTypes.Cafeteria, SystemTypes.Admin)] = 6,
[(SystemTypes.Cafeteria, SystemTypes.Office)] = 6,
[(SystemTypes.Cafeteria, SystemTypes.Greenhouse)] = 7,
[(SystemTypes.Cafeteria, SystemTypes.Comms)] = 7,
[(SystemTypes.Cafeteria, SystemTypes.Balcony)] = 1,
[(SystemTypes.Cafeteria, SystemTypes.MedBay)] = 8,
[(SystemTypes.Storage, SystemTypes.Reactor)] = 14,
[(SystemTypes.Storage, SystemTypes.Laboratory)] = 15,
[(SystemTypes.Storage, SystemTypes.LockerRoom)] = 9,
[(SystemTypes.Storage, SystemTypes.Admin)] = 8,
[(SystemTypes.Storage, SystemTypes.Office)] = 8,
[(SystemTypes.Storage, SystemTypes.Greenhouse)] = 9,
[(SystemTypes.Storage, SystemTypes.Comms)] = 9,
[(SystemTypes.Storage, SystemTypes.Balcony)] = 2,
[(SystemTypes.Storage, SystemTypes.MedBay)] = 10,
[(SystemTypes.Reactor, SystemTypes.Laboratory)] = 2,
[(SystemTypes.Reactor, SystemTypes.LockerRoom)] = 4,
[(SystemTypes.Reactor, SystemTypes.Admin)] = 12,
[(SystemTypes.Reactor, SystemTypes.Office)] = 12,
[(SystemTypes.Reactor, SystemTypes.Greenhouse)] = 13,
[(SystemTypes.Reactor, SystemTypes.Comms)] = 7,
[(SystemTypes.Reactor, SystemTypes.Balcony)] = 14,
[(SystemTypes.Reactor, SystemTypes.MedBay)] = 8,
[(SystemTypes.Laboratory, SystemTypes.LockerRoom)] = 5,
[(SystemTypes.Laboratory, SystemTypes.Admin)] = 13,
[(SystemTypes.Laboratory, SystemTypes.Office)] = 12,
[(SystemTypes.Laboratory, SystemTypes.Greenhouse)] = 13,
[(SystemTypes.Laboratory, SystemTypes.Comms)] = 8,
[(SystemTypes.Laboratory, SystemTypes.Balcony)] = 15,
[(SystemTypes.Laboratory, SystemTypes.MedBay)] = 8,
[(SystemTypes.LockerRoom, SystemTypes.Admin)] = 7,
[(SystemTypes.LockerRoom, SystemTypes.Office)] = 6,
[(SystemTypes.LockerRoom, SystemTypes.Greenhouse)] = 7,
[(SystemTypes.LockerRoom, SystemTypes.Comms)] = 2,
[(SystemTypes.LockerRoom, SystemTypes.Balcony)] = 9,
[(SystemTypes.LockerRoom, SystemTypes.MedBay)] = 3,
[(SystemTypes.Admin, SystemTypes.Office)] = 2,
[(SystemTypes.Admin, SystemTypes.Greenhouse)] = 2,
[(SystemTypes.Admin, SystemTypes.Comms)] = 7,
[(SystemTypes.Admin, SystemTypes.Balcony)] = 8,
[(SystemTypes.Admin, SystemTypes.MedBay)] = 8,
[(SystemTypes.Office, SystemTypes.Greenhouse)] = 2,
[(SystemTypes.Office, SystemTypes.Comms)] = 6,
[(SystemTypes.Office, SystemTypes.Balcony)] = 8,
[(SystemTypes.Office, SystemTypes.MedBay)] = 7,
[(SystemTypes.Greenhouse, SystemTypes.Comms)] = 7,
[(SystemTypes.Greenhouse, SystemTypes.Balcony)] = 9,
[(SystemTypes.Greenhouse, SystemTypes.MedBay)] = 8,
[(SystemTypes.Comms, SystemTypes.Balcony)] = 9,
[(SystemTypes.Comms, SystemTypes.MedBay)] = 2,
[(SystemTypes.Balcony, SystemTypes.MedBay)] = 10
},
[MapNames.Polus] = new()
{
[(SystemTypes.Storage, SystemTypes.Comms)] = 2,
[(SystemTypes.Storage, SystemTypes.Office)] = 2,
[(SystemTypes.Storage, SystemTypes.Admin)] = 2,
[(SystemTypes.Security, SystemTypes.LifeSupp)] = 2,
[(SystemTypes.Security, SystemTypes.Comms)] = 2,
[(SystemTypes.Office, SystemTypes.Specimens)] = 2,
[(SystemTypes.Comms, SystemTypes.Electrical)] = 2
[(SystemTypes.Decontamination2, SystemTypes.Electrical)] = 15,
[(SystemTypes.Decontamination2, SystemTypes.Security)] = 17,
[(SystemTypes.Decontamination2, SystemTypes.LifeSupp)] = 18,
[(SystemTypes.Decontamination2, SystemTypes.Weapons)] = 16,
[(SystemTypes.Decontamination2, SystemTypes.Comms)] = 16,
[(SystemTypes.Decontamination2, SystemTypes.Office)] = 14,
[(SystemTypes.Decontamination2, SystemTypes.Admin)] = 17,
[(SystemTypes.Decontamination2, SystemTypes.Specimens)] = 6,
[(SystemTypes.Decontamination2, SystemTypes.Laboratory)] = 1,
[(SystemTypes.Decontamination2, SystemTypes.Storage)] = 14,
[(SystemTypes.Decontamination2, SystemTypes.Dropship)] = 13,
[(SystemTypes.Decontamination2, SystemTypes.Decontamination3)] = 6,
[(SystemTypes.Decontamination2, SystemTypes.BoilerRoom)] = 20,
[(SystemTypes.Decontamination3, SystemTypes.Electrical)] = 14,
[(SystemTypes.Decontamination3, SystemTypes.Security)] = 17,
[(SystemTypes.Decontamination3, SystemTypes.LifeSupp)] = 13,
[(SystemTypes.Decontamination3, SystemTypes.Weapons)] = 10,
[(SystemTypes.Decontamination3, SystemTypes.Comms)] = 11,
[(SystemTypes.Decontamination3, SystemTypes.Office)] = 7,
[(SystemTypes.Decontamination3, SystemTypes.Admin)] = 5,
[(SystemTypes.Decontamination3, SystemTypes.Specimens)] = 5,
[(SystemTypes.Decontamination3, SystemTypes.Laboratory)] = 14,
[(SystemTypes.Decontamination3, SystemTypes.Storage)] = 13,
[(SystemTypes.Decontamination3, SystemTypes.Dropship)] = 14,
[(SystemTypes.Decontamination3, SystemTypes.BoilerRoom)] = 15,
[(SystemTypes.Electrical, SystemTypes.Security)] = 1,
[(SystemTypes.Electrical, SystemTypes.LifeSupp)] = 2,
[(SystemTypes.Electrical, SystemTypes.Weapons)] = 5,
[(SystemTypes.Electrical, SystemTypes.Comms)] = 5,
[(SystemTypes.Electrical, SystemTypes.Office)] = 7,
[(SystemTypes.Electrical, SystemTypes.Admin)] = 8,
[(SystemTypes.Electrical, SystemTypes.Specimens)] = 14,
[(SystemTypes.Electrical, SystemTypes.Laboratory)] = 5,
[(SystemTypes.Electrical, SystemTypes.Storage)] = 3,
[(SystemTypes.Electrical, SystemTypes.Dropship)] = 3,
[(SystemTypes.Electrical, SystemTypes.BoilerRoom)] = 4,
[(SystemTypes.Security, SystemTypes.LifeSupp)] = 5,
[(SystemTypes.Security, SystemTypes.Weapons)] = 8,
[(SystemTypes.Security, SystemTypes.Comms)] = 8,
[(SystemTypes.Security, SystemTypes.Office)] = 10,
[(SystemTypes.Security, SystemTypes.Admin)] = 11,
[(SystemTypes.Security, SystemTypes.Specimens)] = 17,
[(SystemTypes.Security, SystemTypes.Laboratory)] = 8,
[(SystemTypes.Security, SystemTypes.Storage)] = 6,
[(SystemTypes.Security, SystemTypes.Dropship)] = 6,
[(SystemTypes.Security, SystemTypes.BoilerRoom)] = 7,
[(SystemTypes.LifeSupp, SystemTypes.Weapons)] = 4,
[(SystemTypes.LifeSupp, SystemTypes.Comms)] = 3,
[(SystemTypes.LifeSupp, SystemTypes.Office)] = 6,
[(SystemTypes.LifeSupp, SystemTypes.Admin)] = 7,
[(SystemTypes.LifeSupp, SystemTypes.Specimens)] = 14,
[(SystemTypes.LifeSupp, SystemTypes.Laboratory)] = 10,
[(SystemTypes.LifeSupp, SystemTypes.Storage)] = 8,
[(SystemTypes.LifeSupp, SystemTypes.Dropship)] = 7,
[(SystemTypes.LifeSupp, SystemTypes.BoilerRoom)] = 1,
[(SystemTypes.Weapons, SystemTypes.Comms)] = 2,
[(SystemTypes.Weapons, SystemTypes.Office)] = 4,
[(SystemTypes.Weapons, SystemTypes.Admin)] = 5,
[(SystemTypes.Weapons, SystemTypes.Specimens)] = 11,
[(SystemTypes.Weapons, SystemTypes.Laboratory)] = 7,
[(SystemTypes.Weapons, SystemTypes.Storage)] = 5,
[(SystemTypes.Weapons, SystemTypes.Dropship)] = 6,
[(SystemTypes.Weapons, SystemTypes.BoilerRoom)] = 5,
[(SystemTypes.Comms, SystemTypes.Office)] = 5,
[(SystemTypes.Comms, SystemTypes.Admin)] = 5,
[(SystemTypes.Comms, SystemTypes.Specimens)] = 12,
[(SystemTypes.Comms, SystemTypes.Laboratory)] = 8,
[(SystemTypes.Comms, SystemTypes.Storage)] = 5,
[(SystemTypes.Comms, SystemTypes.Dropship)] = 6,
[(SystemTypes.Comms, SystemTypes.BoilerRoom)] = 5,
[(SystemTypes.Office, SystemTypes.Admin)] = 2,
[(SystemTypes.Office, SystemTypes.Specimens)] = 9,
[(SystemTypes.Office, SystemTypes.Laboratory)] = 5,
[(SystemTypes.Office, SystemTypes.Storage)] = 7,
[(SystemTypes.Office, SystemTypes.Dropship)] = 7,
[(SystemTypes.Office, SystemTypes.BoilerRoom)] = 9,
[(SystemTypes.Admin, SystemTypes.Specimens)] = 6,
[(SystemTypes.Admin, SystemTypes.Laboratory)] = 8,
[(SystemTypes.Admin, SystemTypes.Storage)] = 7,
[(SystemTypes.Admin, SystemTypes.Dropship)] = 8,
[(SystemTypes.Admin, SystemTypes.BoilerRoom)] = 9,
[(SystemTypes.Specimens, SystemTypes.Laboratory)] = 5,
[(SystemTypes.Specimens, SystemTypes.Storage)] = 14,
[(SystemTypes.Specimens, SystemTypes.Dropship)] = 12,
[(SystemTypes.Specimens, SystemTypes.BoilerRoom)] = 15,
[(SystemTypes.Laboratory, SystemTypes.Storage)] = 5,
[(SystemTypes.Laboratory, SystemTypes.Dropship)] = 4,
[(SystemTypes.Laboratory, SystemTypes.BoilerRoom)] = 11,
[(SystemTypes.Storage, SystemTypes.Dropship)] = 3,
[(SystemTypes.Storage, SystemTypes.BoilerRoom)] = 9,
[(SystemTypes.Dropship, SystemTypes.BoilerRoom)] = 9
},
[MapNames.Airship] = new()
{
[(SystemTypes.Showers, SystemTypes.CargoBay)] = 2,
[(SystemTypes.Showers, SystemTypes.Medical)] = 2,
[(SystemTypes.Comms, SystemTypes.VaultRoom)] = 2,
[(SystemTypes.MeetingRoom, SystemTypes.Records)] = 5,
[(SystemTypes.MeetingRoom, SystemTypes.Lounge)] = 3,
[(SystemTypes.MeetingRoom, SystemTypes.MainHall)] = 2,
[(SystemTypes.MeetingRoom, SystemTypes.CargoBay)] = 2,
[(SystemTypes.MeetingRoom, SystemTypes.Showers)] = 2,
[(SystemTypes.Engine, SystemTypes.Security)] = 2,
[(SystemTypes.Engine, SystemTypes.HallOfPortraits)] = 2,
[(SystemTypes.MainHall, SystemTypes.Security)] = 2
[(SystemTypes.Ventilation, SystemTypes.Cockpit)] = 24,
[(SystemTypes.Ventilation, SystemTypes.Armory)] = 23,
[(SystemTypes.Ventilation, SystemTypes.Comms)] = 23,
[(SystemTypes.Ventilation, SystemTypes.Engine)] = 17,
[(SystemTypes.Ventilation, SystemTypes.Brig)] = 22,
[(SystemTypes.Ventilation, SystemTypes.VaultRoom)] = 22,
[(SystemTypes.Ventilation, SystemTypes.Kitchen)] = 17,
[(SystemTypes.Ventilation, SystemTypes.ViewingDeck)] = 20,
[(SystemTypes.Ventilation, SystemTypes.GapRoom)] = 23,
[(SystemTypes.Ventilation, SystemTypes.MainHall)] = 13,
[(SystemTypes.Ventilation, SystemTypes.Showers)] = 10,
[(SystemTypes.Ventilation, SystemTypes.Records)] = 9,
[(SystemTypes.Ventilation, SystemTypes.Lounge)] = 7,
[(SystemTypes.Ventilation, SystemTypes.Security)] = 14,
[(SystemTypes.Ventilation, SystemTypes.CargoBay)] = 11,
[(SystemTypes.Ventilation, SystemTypes.Electrical)] = 7,
[(SystemTypes.Ventilation, SystemTypes.Medical)] = 13,
[(SystemTypes.Ventilation, SystemTypes.MeetingRoom)] = 25,
[(SystemTypes.Ventilation, SystemTypes.HallOfPortraits)] = 16,
[(SystemTypes.Cockpit, SystemTypes.Armory)] = 3,
[(SystemTypes.Cockpit, SystemTypes.Comms)] = 2,
[(SystemTypes.Cockpit, SystemTypes.Engine)] = 4,
[(SystemTypes.Cockpit, SystemTypes.Brig)] = 8,
[(SystemTypes.Cockpit, SystemTypes.VaultRoom)] = 10,
[(SystemTypes.Cockpit, SystemTypes.Kitchen)] = 5,
[(SystemTypes.Cockpit, SystemTypes.ViewingDeck)] = 7,
[(SystemTypes.Cockpit, SystemTypes.GapRoom)] = 16,
[(SystemTypes.Cockpit, SystemTypes.MainHall)] = 8,
[(SystemTypes.Cockpit, SystemTypes.Showers)] = 12,
[(SystemTypes.Cockpit, SystemTypes.Records)] = 15,
[(SystemTypes.Cockpit, SystemTypes.Lounge)] = 17,
[(SystemTypes.Cockpit, SystemTypes.Security)] = 10,
[(SystemTypes.Cockpit, SystemTypes.CargoBay)] = 21,
[(SystemTypes.Cockpit, SystemTypes.Electrical)] = 12,
[(SystemTypes.Cockpit, SystemTypes.Medical)] = 15,
[(SystemTypes.Cockpit, SystemTypes.MeetingRoom)] = 13,
[(SystemTypes.Cockpit, SystemTypes.HallOfPortraits)] = 8,
[(SystemTypes.Armory, SystemTypes.Comms)] = 2,
[(SystemTypes.Armory, SystemTypes.Engine)] = 2,
[(SystemTypes.Armory, SystemTypes.Brig)] = 7,
[(SystemTypes.Armory, SystemTypes.VaultRoom)] = 8,
[(SystemTypes.Armory, SystemTypes.Kitchen)] = 1,
[(SystemTypes.Armory, SystemTypes.ViewingDeck)] = 3,
[(SystemTypes.Armory, SystemTypes.GapRoom)] = 15,
[(SystemTypes.Armory, SystemTypes.MainHall)] = 7,
[(SystemTypes.Armory, SystemTypes.Showers)] = 11,
[(SystemTypes.Armory, SystemTypes.Records)] = 13,
[(SystemTypes.Armory, SystemTypes.Lounge)] = 15,
[(SystemTypes.Armory, SystemTypes.Security)] = 6,
[(SystemTypes.Armory, SystemTypes.CargoBay)] = 21,
[(SystemTypes.Armory, SystemTypes.Electrical)] = 8,
[(SystemTypes.Armory, SystemTypes.Medical)] = 18,
[(SystemTypes.Armory, SystemTypes.MeetingRoom)] = 11,
[(SystemTypes.Armory, SystemTypes.HallOfPortraits)] = 4,
[(SystemTypes.Comms, SystemTypes.Engine)] = 3,
[(SystemTypes.Comms, SystemTypes.Brig)] = 7,
[(SystemTypes.Comms, SystemTypes.VaultRoom)] = 9,
[(SystemTypes.Comms, SystemTypes.Kitchen)] = 4,
[(SystemTypes.Comms, SystemTypes.ViewingDeck)] = 6,
[(SystemTypes.Comms, SystemTypes.GapRoom)] = 15,
[(SystemTypes.Comms, SystemTypes.MainHall)] = 7,
[(SystemTypes.Comms, SystemTypes.Showers)] = 11,
[(SystemTypes.Comms, SystemTypes.Records)] = 13,
[(SystemTypes.Comms, SystemTypes.Lounge)] = 16,
[(SystemTypes.Comms, SystemTypes.Security)] = 9,
[(SystemTypes.Comms, SystemTypes.CargoBay)] = 20,
[(SystemTypes.Comms, SystemTypes.Electrical)] = 11,
[(SystemTypes.Comms, SystemTypes.Medical)] = 18,
[(SystemTypes.Comms, SystemTypes.MeetingRoom)] = 12,
[(SystemTypes.Comms, SystemTypes.HallOfPortraits)] = 7,
[(SystemTypes.Engine, SystemTypes.Brig)] = 1,
[(SystemTypes.Engine, SystemTypes.VaultRoom)] = 2,
[(SystemTypes.Engine, SystemTypes.Kitchen)] = 4,
[(SystemTypes.Engine, SystemTypes.ViewingDeck)] = 6,
[(SystemTypes.Engine, SystemTypes.GapRoom)] = 10,
[(SystemTypes.Engine, SystemTypes.MainHall)] = 1,
[(SystemTypes.Engine, SystemTypes.Showers)] = 5,
[(SystemTypes.Engine, SystemTypes.Records)] = 8,
[(SystemTypes.Engine, SystemTypes.Lounge)] = 10,
[(SystemTypes.Engine, SystemTypes.Security)] = 8,
[(SystemTypes.Engine, SystemTypes.CargoBay)] = 14,
[(SystemTypes.Engine, SystemTypes.Electrical)] = 5,
[(SystemTypes.Engine, SystemTypes.Medical)] = 12,
[(SystemTypes.Engine, SystemTypes.MeetingRoom)] = 5,
[(SystemTypes.Engine, SystemTypes.HallOfPortraits)] = 7,
[(SystemTypes.Brig, SystemTypes.VaultRoom)] = 1,
[(SystemTypes.Brig, SystemTypes.Kitchen)] = 9,
[(SystemTypes.Brig, SystemTypes.ViewingDeck)] = 11,
[(SystemTypes.Brig, SystemTypes.GapRoom)] = 14,
[(SystemTypes.Brig, SystemTypes.MainHall)] = 5,
[(SystemTypes.Brig, SystemTypes.Showers)] = 9,
[(SystemTypes.Brig, SystemTypes.Records)] = 12,
[(SystemTypes.Brig, SystemTypes.Lounge)] = 14,
[(SystemTypes.Brig, SystemTypes.Security)] = 12,
[(SystemTypes.Brig, SystemTypes.CargoBay)] = 18,
[(SystemTypes.Brig, SystemTypes.Electrical)] = 10,
[(SystemTypes.Brig, SystemTypes.Medical)] = 16,
[(SystemTypes.Brig, SystemTypes.MeetingRoom)] = 4,
[(SystemTypes.Brig, SystemTypes.HallOfPortraits)] = 12,
[(SystemTypes.VaultRoom, SystemTypes.Kitchen)] = 10,
[(SystemTypes.VaultRoom, SystemTypes.ViewingDeck)] = 12,
[(SystemTypes.VaultRoom, SystemTypes.GapRoom)] = 15,
[(SystemTypes.VaultRoom, SystemTypes.MainHall)] = 7,
[(SystemTypes.VaultRoom, SystemTypes.Showers)] = 11,
[(SystemTypes.VaultRoom, SystemTypes.Records)] = 13,
[(SystemTypes.VaultRoom, SystemTypes.Lounge)] = 15,
[(SystemTypes.VaultRoom, SystemTypes.Security)] = 13,
[(SystemTypes.VaultRoom, SystemTypes.CargoBay)] = 19,
[(SystemTypes.VaultRoom, SystemTypes.Electrical)] = 11,
[(SystemTypes.VaultRoom, SystemTypes.Medical)] = 18,
[(SystemTypes.VaultRoom, SystemTypes.MeetingRoom)] = 6,
[(SystemTypes.VaultRoom, SystemTypes.HallOfPortraits)] = 13,
[(SystemTypes.Kitchen, SystemTypes.ViewingDeck)] = 1,
[(SystemTypes.Kitchen, SystemTypes.GapRoom)] = 16,
[(SystemTypes.Kitchen, SystemTypes.MainHall)] = 9,
[(SystemTypes.Kitchen, SystemTypes.Showers)] = 12,
[(SystemTypes.Kitchen, SystemTypes.Records)] = 14,
[(SystemTypes.Kitchen, SystemTypes.Lounge)] = 16,
[(SystemTypes.Kitchen, SystemTypes.Security)] = 3,
[(SystemTypes.Kitchen, SystemTypes.CargoBay)] = 18,
[(SystemTypes.Kitchen, SystemTypes.Electrical)] = 5,
[(SystemTypes.Kitchen, SystemTypes.Medical)] = 14,
[(SystemTypes.Kitchen, SystemTypes.MeetingRoom)] = 14,
[(SystemTypes.Kitchen, SystemTypes.HallOfPortraits)] = 1,
[(SystemTypes.ViewingDeck, SystemTypes.GapRoom)] = 18,
[(SystemTypes.ViewingDeck, SystemTypes.MainHall)] = 11,
[(SystemTypes.ViewingDeck, SystemTypes.Showers)] = 14,
[(SystemTypes.ViewingDeck, SystemTypes.Records)] = 17,
[(SystemTypes.ViewingDeck, SystemTypes.Lounge)] = 18,
[(SystemTypes.ViewingDeck, SystemTypes.Security)] = 6,
[(SystemTypes.ViewingDeck, SystemTypes.CargoBay)] = 21,
[(SystemTypes.ViewingDeck, SystemTypes.Electrical)] = 7,
[(SystemTypes.ViewingDeck, SystemTypes.Medical)] = 16,
[(SystemTypes.ViewingDeck, SystemTypes.MeetingRoom)] = 15,
[(SystemTypes.ViewingDeck, SystemTypes.HallOfPortraits)] = 4,
[(SystemTypes.GapRoom, SystemTypes.MainHall)] = 7,
[(SystemTypes.GapRoom, SystemTypes.Showers)] = 11,
[(SystemTypes.GapRoom, SystemTypes.Records)] = 13,
[(SystemTypes.GapRoom, SystemTypes.Lounge)] = 15,
[(SystemTypes.GapRoom, SystemTypes.Security)] = 13,
[(SystemTypes.GapRoom, SystemTypes.CargoBay)] = 20,
[(SystemTypes.GapRoom, SystemTypes.Electrical)] = 11,
[(SystemTypes.GapRoom, SystemTypes.Medical)] = 19,
[(SystemTypes.GapRoom, SystemTypes.MeetingRoom)] = 18,
[(SystemTypes.GapRoom, SystemTypes.HallOfPortraits)] = 14,
[(SystemTypes.MainHall, SystemTypes.Showers)] = 1,
[(SystemTypes.MainHall, SystemTypes.Records)] = 3,
[(SystemTypes.MainHall, SystemTypes.Lounge)] = 5,
[(SystemTypes.MainHall, SystemTypes.Security)] = 5,
[(SystemTypes.MainHall, SystemTypes.CargoBay)] = 10,
[(SystemTypes.MainHall, SystemTypes.Electrical)] = 1,
[(SystemTypes.MainHall, SystemTypes.Medical)] = 9,
[(SystemTypes.MainHall, SystemTypes.MeetingRoom)] = 10,
[(SystemTypes.MainHall, SystemTypes.HallOfPortraits)] = 6,
[(SystemTypes.Showers, SystemTypes.Records)] = 1,
[(SystemTypes.Showers, SystemTypes.Lounge)] = 3,
[(SystemTypes.Showers, SystemTypes.Security)] = 8,
[(SystemTypes.Showers, SystemTypes.CargoBay)] = 8,
[(SystemTypes.Showers, SystemTypes.Electrical)] = 4,
[(SystemTypes.Showers, SystemTypes.Medical)] = 12,
[(SystemTypes.Showers, SystemTypes.MeetingRoom)] = 14,
[(SystemTypes.Showers, SystemTypes.HallOfPortraits)] = 9,
[(SystemTypes.Records, SystemTypes.Lounge)] = 1,
[(SystemTypes.Records, SystemTypes.Security)] = 9,
[(SystemTypes.Records, SystemTypes.CargoBay)] = 6,
[(SystemTypes.Records, SystemTypes.Electrical)] = 6,
[(SystemTypes.Records, SystemTypes.Medical)] = 8,
[(SystemTypes.Records, SystemTypes.MeetingRoom)] = 16,
[(SystemTypes.Records, SystemTypes.HallOfPortraits)] = 12,
[(SystemTypes.Lounge, SystemTypes.Security)] = 15,
[(SystemTypes.Lounge, SystemTypes.CargoBay)] = 1,
[(SystemTypes.Lounge, SystemTypes.Electrical)] = 8,
[(SystemTypes.Lounge, SystemTypes.Medical)] = 4,
[(SystemTypes.Lounge, SystemTypes.MeetingRoom)] = 18,
[(SystemTypes.Lounge, SystemTypes.HallOfPortraits)] = 17,
[(SystemTypes.Security, SystemTypes.CargoBay)] = 14,
[(SystemTypes.Security, SystemTypes.Electrical)] = 1,
[(SystemTypes.Security, SystemTypes.Medical)] = 10,
[(SystemTypes.Security, SystemTypes.MeetingRoom)] = 18,
[(SystemTypes.Security, SystemTypes.HallOfPortraits)] = 1,
[(SystemTypes.CargoBay, SystemTypes.Electrical)] = 5,
[(SystemTypes.CargoBay, SystemTypes.Medical)] = 1,
[(SystemTypes.CargoBay, SystemTypes.MeetingRoom)] = 22,
[(SystemTypes.CargoBay, SystemTypes.HallOfPortraits)] = 16,
[(SystemTypes.Electrical, SystemTypes.Medical)] = 1,
[(SystemTypes.Electrical, SystemTypes.MeetingRoom)] = 14,
[(SystemTypes.Electrical, SystemTypes.HallOfPortraits)] = 3,
[(SystemTypes.Medical, SystemTypes.MeetingRoom)] = 22,
[(SystemTypes.Medical, SystemTypes.HallOfPortraits)] = 12,
[(SystemTypes.MeetingRoom, SystemTypes.HallOfPortraits)] = 15
},
[MapNames.Fungle] = new()
{
[(SystemTypes.Lookout, SystemTypes.SleepingQuarters)] = 3,
[(SystemTypes.Lookout, SystemTypes.MeetingRoom)] = 2,
[(SystemTypes.Lookout, SystemTypes.Storage)] = 3,
[(SystemTypes.MiningPit, SystemTypes.SleepingQuarters)] = 2,
[(SystemTypes.MiningPit, SystemTypes.MeetingRoom)] = 2,
[(SystemTypes.MiningPit, SystemTypes.Storage)] = 2,
[(SystemTypes.MiningPit, SystemTypes.Dropship)] = 2,
[(SystemTypes.MiningPit, SystemTypes.Comms)] = 2
},
[(MapNames)6] = new()
{
[(SystemTypes.Admin, SystemTypes.MeetingRoom)] = 2,
[(SystemTypes.Admin, SystemTypes.Lounge)] = 2,
[(SystemTypes.Comms, SystemTypes.Medical)] = 2,
[((SystemTypes)SubmergedCompatibility.SubmergedSystemTypes.Research, SystemTypes.Medical)] = 3,
[((SystemTypes)SubmergedCompatibility.SubmergedSystemTypes.Ballast, SystemTypes.Security)] = 2
[(SystemTypes.Cafeteria, SystemTypes.Comms)] = 23,
[(SystemTypes.Cafeteria, SystemTypes.FishingDock)] = 7,
[(SystemTypes.Cafeteria, SystemTypes.Dropship)] = 3,
[(SystemTypes.Cafeteria, SystemTypes.Greenhouse)] = 10,
[(SystemTypes.Cafeteria, SystemTypes.Kitchen)] = 5,
[(SystemTypes.Cafeteria, SystemTypes.Laboratory)] = 13,
[(SystemTypes.Cafeteria, SystemTypes.Lookout)] = 15,
[(SystemTypes.Cafeteria, SystemTypes.MeetingRoom)] = 4,
[(SystemTypes.Cafeteria, SystemTypes.SleepingQuarters)] = 6,
[(SystemTypes.Cafeteria, SystemTypes.MiningPit)] = 17,
[(SystemTypes.Cafeteria, SystemTypes.Reactor)] = 15,
[(SystemTypes.Cafeteria, SystemTypes.RecRoom)] = 4,
[(SystemTypes.Cafeteria, SystemTypes.Storage)] = 5,
[(SystemTypes.Cafeteria, SystemTypes.UpperEngine)] = 17,
[(SystemTypes.Comms, SystemTypes.FishingDock)] = 23,
[(SystemTypes.Comms, SystemTypes.Dropship)] = 19,
[(SystemTypes.Comms, SystemTypes.Greenhouse)] = 13,
[(SystemTypes.Comms, SystemTypes.Kitchen)] = 21,
[(SystemTypes.Comms, SystemTypes.Laboratory)] = 21,
[(SystemTypes.Comms, SystemTypes.Lookout)] = 8,
[(SystemTypes.Comms, SystemTypes.MeetingRoom)] = 15,
[(SystemTypes.Comms, SystemTypes.SleepingQuarters)] = 17,
[(SystemTypes.Comms, SystemTypes.MiningPit)] = 8,
[(SystemTypes.Comms, SystemTypes.Reactor)] = 9,
[(SystemTypes.Comms, SystemTypes.RecRoom)] = 21,
[(SystemTypes.Comms, SystemTypes.Storage)] = 19,
[(SystemTypes.Comms, SystemTypes.UpperEngine)] = 5,
[(SystemTypes.FishingDock, SystemTypes.Dropship)] = 8,
[(SystemTypes.FishingDock, SystemTypes.Greenhouse)] = 12,
[(SystemTypes.FishingDock, SystemTypes.Kitchen)] = 1,
[(SystemTypes.FishingDock, SystemTypes.Laboratory)] = 14,
[(SystemTypes.FishingDock, SystemTypes.Lookout)] = 18,
[(SystemTypes.FishingDock, SystemTypes.MeetingRoom)] = 6,
[(SystemTypes.FishingDock, SystemTypes.SleepingQuarters)] = 9,
[(SystemTypes.FishingDock, SystemTypes.MiningPit)] = 19,
[(SystemTypes.FishingDock, SystemTypes.Reactor)] = 17,
[(SystemTypes.FishingDock, SystemTypes.RecRoom)] = 4,
[(SystemTypes.FishingDock, SystemTypes.Storage)] = 8,
[(SystemTypes.FishingDock, SystemTypes.UpperEngine)] = 21,
[(SystemTypes.Dropship, SystemTypes.Greenhouse)] = 9,
[(SystemTypes.Dropship, SystemTypes.Kitchen)] = 6,
[(SystemTypes.Dropship, SystemTypes.Laboratory)] = 12,
[(SystemTypes.Dropship, SystemTypes.Lookout)] = 14,
[(SystemTypes.Dropship, SystemTypes.MeetingRoom)] = 3,
[(SystemTypes.Dropship, SystemTypes.SleepingQuarters)] = 5,
[(SystemTypes.Dropship, SystemTypes.MiningPit)] = 15,
[(SystemTypes.Dropship, SystemTypes.Reactor)] = 13,
[(SystemTypes.Dropship, SystemTypes.RecRoom)] = 5,
[(SystemTypes.Dropship, SystemTypes.Storage)] = 2,
[(SystemTypes.Dropship, SystemTypes.UpperEngine)] = 16,
[(SystemTypes.Greenhouse, SystemTypes.Kitchen)] = 11,
[(SystemTypes.Greenhouse, SystemTypes.Laboratory)] = 10,
[(SystemTypes.Greenhouse, SystemTypes.Lookout)] = 7,
[(SystemTypes.Greenhouse, SystemTypes.MeetingRoom)] = 6,
[(SystemTypes.Greenhouse, SystemTypes.SleepingQuarters)] = 7,
[(SystemTypes.Greenhouse, SystemTypes.MiningPit)] = 9,
[(SystemTypes.Greenhouse, SystemTypes.Reactor)] = 5,
[(SystemTypes.Greenhouse, SystemTypes.RecRoom)] = 11,
[(SystemTypes.Greenhouse, SystemTypes.Storage)] = 9,
[(SystemTypes.Greenhouse, SystemTypes.UpperEngine)] = 9,
[(SystemTypes.Kitchen, SystemTypes.Laboratory)] = 12,
[(SystemTypes.Kitchen, SystemTypes.Lookout)] = 16,
[(SystemTypes.Kitchen, SystemTypes.MeetingRoom)] = 5,
[(SystemTypes.Kitchen, SystemTypes.SleepingQuarters)] = 7,
[(SystemTypes.Kitchen, SystemTypes.MiningPit)] = 17,
[(SystemTypes.Kitchen, SystemTypes.Reactor)] = 15,
[(SystemTypes.Kitchen, SystemTypes.RecRoom)] = 3,
[(SystemTypes.Kitchen, SystemTypes.Storage)] = 7,
[(SystemTypes.Kitchen, SystemTypes.UpperEngine)] = 19,
[(SystemTypes.Laboratory, SystemTypes.Lookout)] = 16,
[(SystemTypes.Laboratory, SystemTypes.MeetingRoom)] = 8,
[(SystemTypes.Laboratory, SystemTypes.SleepingQuarters)] = 9,
[(SystemTypes.Laboratory, SystemTypes.MiningPit)] = 17,
[(SystemTypes.Laboratory, SystemTypes.Reactor)] = 13,
[(SystemTypes.Laboratory, SystemTypes.RecRoom)] = 13,
[(SystemTypes.Laboratory, SystemTypes.Storage)] = 12,
[(SystemTypes.Laboratory, SystemTypes.UpperEngine)] = 17,
[(SystemTypes.Lookout, SystemTypes.MeetingRoom)] = 9,
[(SystemTypes.Lookout, SystemTypes.SleepingQuarters)] = 10,
[(SystemTypes.Lookout, SystemTypes.MiningPit)] = 2,
[(SystemTypes.Lookout, SystemTypes.Reactor)] = 6,
[(SystemTypes.Lookout, SystemTypes.RecRoom)] = 14,
[(SystemTypes.Lookout, SystemTypes.Storage)] = 12,
[(SystemTypes.Lookout, SystemTypes.UpperEngine)] = 4,
[(SystemTypes.MeetingRoom, SystemTypes.SleepingQuarters)] = 1,
[(SystemTypes.MeetingRoom, SystemTypes.MiningPit)] = 11,
[(SystemTypes.MeetingRoom, SystemTypes.Reactor)] = 10,
[(SystemTypes.MeetingRoom, SystemTypes.RecRoom)] = 4,
[(SystemTypes.MeetingRoom, SystemTypes.Storage)] = 3,
[(SystemTypes.MeetingRoom, SystemTypes.UpperEngine)] = 12,
[(SystemTypes.SleepingQuarters, SystemTypes.MiningPit)] = 13,
[(SystemTypes.SleepingQuarters, SystemTypes.Reactor)] = 11,
[(SystemTypes.SleepingQuarters, SystemTypes.RecRoom)] = 6,
[(SystemTypes.SleepingQuarters, SystemTypes.Storage)] = 4,
[(SystemTypes.SleepingQuarters, SystemTypes.UpperEngine)] = 13,
[(SystemTypes.MiningPit, SystemTypes.Reactor)] = 7,
[(SystemTypes.MiningPit, SystemTypes.RecRoom)] = 15,
[(SystemTypes.MiningPit, SystemTypes.Storage)] = 13,
[(SystemTypes.MiningPit, SystemTypes.UpperEngine)] = 3,
[(SystemTypes.Reactor, SystemTypes.RecRoom)] = 15,
[(SystemTypes.Reactor, SystemTypes.Storage)] = 13,
[(SystemTypes.Reactor, SystemTypes.UpperEngine)] = 5,
[(SystemTypes.RecRoom, SystemTypes.Storage)] = 6,
[(SystemTypes.RecRoom, SystemTypes.UpperEngine)] = 17,
[(SystemTypes.Storage, SystemTypes.UpperEngine)] = 15
}
};
static RoomRush()
{
RawTimeNeeded[MapNames.Dleks] = RawTimeNeeded[MapNames.Skeld];
}
public static bool PointsSystem => WinByPointsInsteadOfDeaths.GetBool();
public static int RawPointsToWin => PointsToWin.GetInt();
@@ -126,10 +629,11 @@ public static class RoomRush
Color color = Utils.GetRoleColor(CustomRoles.RRPlayer);
const CustomGameMode gameMode = CustomGameMode.RoomRush;
GlobalTimeMultiplier = new FloatOptionItem(id++, "RR_GlobalTimeMultiplier", new(0.05f, 3f, 0.05f), 1f, TabGroup.GameSettings)
GlobalTimeAddition = new IntegerOptionItem(id++, "RR_GlobalTimeAddition", new(0, 15, 1), 4, TabGroup.GameSettings)
.SetHeader(true)
.SetColor(color)
.SetGameMode(gameMode);
.SetGameMode(gameMode)
.SetValueFormat(OptionFormat.Seconds);
TimeWhenFirstTwoPlayersEnterRoom = new IntegerOptionItem(id++, "RR_TimeWhenTwoPlayersEntersRoom", new(1, 30, 1), 5, TabGroup.GameSettings)
.SetColor(color)
@@ -190,6 +694,9 @@ public static class RoomRush
public static IEnumerator GameStartTasks()
{
/*yield return RRTimeTester.DoTest();
yield break;*/
GameGoing = false;
int ventLimit = VentTimes.GetInt();
@@ -198,8 +705,6 @@ public static class RoomRush
AllRooms = ShipStatus.Instance.AllRooms.Select(x => x.RoomId).ToHashSet();
AllRooms.Remove(SystemTypes.Hallway);
AllRooms.Remove(SystemTypes.Outside);
AllRooms.Remove(SystemTypes.Ventilation);
AllRooms.RemoveWhere(x => x.ToString().Contains("Decontamination"));
if (SubmergedCompatibility.IsSubmerged()) AllRooms.RemoveWhere(x => (byte)x > 135);
DonePlayers = [];
@@ -336,13 +841,10 @@ public static class RoomRush
float speed = Main.RealOptionsData.GetFloat(FloatOptionNames.PlayerSpeedMod);
int time;
if (!Main.LIMap)
if (RawTimeNeeded.TryGetValue(map, out Dictionary<(SystemTypes, SystemTypes), int> rawTimes))
{
Vector2 previousPos = Map.Positions.GetValueOrDefault(previous, initial ? Main.EnumerateAlivePlayerControls().RandomElement().Pos() : previous.GetRoomClass().transform.position);
float distance = initial ? 50 : Vector2.Distance(goalPos, previousPos);
time = (int)Math.Ceiling(distance / speed);
Dictionary<(SystemTypes, SystemTypes), int> multipliers = Multipliers[map == MapNames.Dleks ? MapNames.Skeld : map];
time *= multipliers.GetValueOrDefault((previous, RoomGoal), multipliers.GetValueOrDefault((RoomGoal, previous), 1));
time = initial ? rawTimes.Values.Max() : rawTimes.GetValueOrDefault((previous, RoomGoal), rawTimes.GetValueOrDefault((RoomGoal, previous), 25));
time = (int)Math.Round(time / (speed / 1.25f));
bool involvesDecontamination = map switch
{
@@ -353,41 +855,25 @@ public static class RoomRush
};
if (involvesDecontamination)
{
int decontaminationTime = Options.ChangeDecontaminationTime.GetBool()
? map == MapNames.Polus
? Options.DecontaminationTimeOnPolus.GetInt() + Options.DecontaminationDoorOpenTimeOnPolus.GetInt()
: Options.DecontaminationTimeOnMiraHQ.GetInt() + Options.DecontaminationDoorOpenTimeOnMiraHQ.GetInt()
: 6;
if (SubmergedCompatibility.IsSubmerged()) decontaminationTime = 3;
time += decontaminationTime;
}
time += 2;
switch (map)
{
case MapNames.Fungle when RoomGoal == SystemTypes.Laboratory || previous == SystemTypes.Laboratory:
time += (int)(8 / speed);
break;
case MapNames.Polus when (RoomGoal == SystemTypes.Laboratory && previous is not SystemTypes.Storage and not SystemTypes.Specimens and not SystemTypes.Office) || (previous == SystemTypes.Laboratory && RoomGoal is not SystemTypes.Office and not SystemTypes.Storage and not SystemTypes.Electrical and not SystemTypes.Specimens):
time -= (int)(5 * speed);
break;
case MapNames.Airship when previous == SystemTypes.GapRoom:
time *= RoomGoal switch
case MapNames.Airship:
time += previous switch
{
SystemTypes.MeetingRoom => 6,
SystemTypes.Brig or SystemTypes.VaultRoom or SystemTypes.Records or SystemTypes.Showers or SystemTypes.Lounge => 3,
SystemTypes.Engine or SystemTypes.CargoBay or SystemTypes.Medical => 2,
_ => 1
SystemTypes.Engine => 3,
SystemTypes.MainHall => 2,
_ => 0
};
break;
}
var maxTime = (int)Math.Ceiling((map is MapNames.Skeld or MapNames.Dleks ? 25 : 32) / speed);
time = Math.Clamp((int)Math.Round(time * GlobalTimeMultiplier.GetFloat()), 6, maxTime);
time += GlobalTimeAddition.GetInt();
if (time < 6) time = 6;
}
else
time = (int)Math.Ceiling(32 / speed * GlobalTimeMultiplier.GetFloat());
time = (int)Math.Ceiling(32 / speed);
TimeLimitEndTS = Utils.TimeStamp + time;
Logger.Info($"Starting a new round - Goal = from: {Translator.GetString(previous.ToString())} ({previous}), to: {Translator.GetString(RoomGoal.ToString())} ({RoomGoal}) - Time: {time} ({map})", "RoomRush");
-1
View File
@@ -105,7 +105,6 @@ internal static class CustomRoleSelector
{
case CustomRoles.Ventriloquist when GameStates.CurrentServerType == GameStates.ServerType.Vanilla:
case CustomRoles.Weatherman when Main.LIMap || GameStates.CurrentServerType == GameStates.ServerType.Vanilla:
case CustomRoles.RoomRusher when Main.LIMap:
case CustomRoles.Doctor when Options.EveryoneSeesDeathReasons.GetBool():
case CustomRoles.LovingCrewmate or CustomRoles.LovingImpostor when !loversData.Spawning:
case CustomRoles.Commander when optImpNum <= 1 && Commander.CannotSpawnAsSoloImp.GetBool():
+1
View File
@@ -269,6 +269,7 @@ internal static class HudManagerPatch
LowerInfoText.text = Options.CurrentGameMode switch
{
//CustomGameMode.RoomRush => RRTimeTester.HUDText,
CustomGameMode.SoloPVP => SoloPVP.GetHudText(),
CustomGameMode.FFA => FreeForAll.GetHudText(),
CustomGameMode.StopAndGo => StopAndGo.GetHudText(),
+3 -6
View File
@@ -319,13 +319,10 @@ internal static class OnGameJoinedPatch
{
File.SetAttributes(file, FileAttributes.Normal); // remove read-only to avoid exceptions
File.Delete(file);
filesDeleted++;
}
else
{
// keep dry-run count behavior (so the user sees how many would be affected)
filesDeleted++;
}
// keep dry-run count behavior (so the user sees how many would be affected)
filesDeleted++;
}
}
catch (Exception exFile)
+1 -1
View File
@@ -8146,7 +8146,7 @@
"RR_DontKillPlayersOutsideRoomWhenTimeRunsOut": "Don't Kill Players Outside the Room When the Time Runs Out",
"RR_DontLowerTimeLimitWhenTwoPlayersEnterCorrectRoom": "Don't Lower Time Limit When the First Two Players Enter the Correct Room",
"RR_FirstPoints": "1st place: {0} with {1} points",
"RR_GlobalTimeMultiplier": "Global Time Multiplier (for adjusting the difficulty)",
"RR_GlobalTimeAddition": "Global Time Addition (to raw necessary time)",
"RR_Points": "Points: {0}/{1}",
"RR_PointsToWin": "Points to Win - Multiplied by how many players are in the game",
"RR_ReadyQM": "Ready?\\nStarting in <#ffff44>{0}</color>",
+15 -37
View File
@@ -14,9 +14,8 @@ public class RoomRusher : RoleBase
public static bool On;
private static HashSet<SystemTypes> AllRooms = [];
private static RandomSpawn.SpawnMap Map;
private static OptionItem GlobalTimeMultiplier;
private static OptionItem GlobalTimeAddition;
private static OptionItem MaxVents;
private static OptionItem RoomNameDisplay;
private static OptionItem Arrow;
@@ -39,7 +38,7 @@ public class RoomRusher : RoleBase
public override void SetupCustomOption()
{
StartSetup(645100)
.AutoSetupOption(ref GlobalTimeMultiplier, 1f, new FloatValueRule(0.05f, 2f, 0.05f), OptionFormat.Multiplier, overrideName: "RR_GlobalTimeMultiplier")
.AutoSetupOption(ref GlobalTimeAddition, 4, new IntegerValueRule(0, 15, 1), OptionFormat.Seconds, overrideName: "RR_GlobalTimeAddition")
.AutoSetupOption(ref MaxVents, 1, new IntegerValueRule(0, 30, 1))
.AutoSetupOption(ref RoomNameDisplay, true, overrideName: "RR_DisplayRoomName")
.AutoSetupOption(ref Arrow, false, overrideName: "RR_DisplayArrowToRoom")
@@ -67,12 +66,8 @@ public class RoomRusher : RoleBase
AllRooms = ShipStatus.Instance.AllRooms.Select(x => x.RoomId).ToHashSet();
AllRooms.Remove(SystemTypes.Hallway);
AllRooms.Remove(SystemTypes.Outside);
AllRooms.Remove(SystemTypes.Ventilation);
AllRooms.RemoveWhere(x => x.ToString().Contains("Decontamination"));
if (SubmergedCompatibility.IsSubmerged()) AllRooms.RemoveWhere(x => (byte)x > 135);
Map = RandomSpawn.SpawnMap.GetSpawnMap();
StartNewRound(true);
}, Main.CurrentMap == MapNames.Airship ? 22f : 14f);
}
@@ -105,13 +100,11 @@ public class RoomRusher : RoleBase
if (!initial && !dontCount) CompletedNum++;
PlayerControl rrpc = RoomRusherId.GetPlayer();
RoomGoal = AllRooms.Without(previous).RandomElement();
Vector2 goalPos = Map.Positions.GetValueOrDefault(RoomGoal, RoomGoal.GetRoomClass().transform.position);
Vector2 previousPos = Map.Positions.GetValueOrDefault(previous, initial ? rrpc.Pos() : previous.GetRoomClass().transform.position);
float distance = initial || afterMeeting ? 50 : Vector2.Distance(goalPos, previousPos);
Vector2 goalPos = RoomGoal.GetRoomClass().transform.position;
float speed = Main.RealOptionsData.GetFloat(FloatOptionNames.PlayerSpeedMod);
var time = (int)Math.Ceiling(distance / speed);
Dictionary<(SystemTypes, SystemTypes), int> multipliers = RoomRush.Multipliers[map == MapNames.Dleks ? MapNames.Skeld : map];
time *= multipliers.GetValueOrDefault((previous, RoomGoal), multipliers.GetValueOrDefault((RoomGoal, previous), 1));
var rawTimes = RoomRush.RawTimeNeeded.GetValueOrDefault(map, []);
var time = initial ? rawTimes.Values.Max() : rawTimes.GetValueOrDefault((previous, RoomGoal), rawTimes.GetValueOrDefault((RoomGoal, previous), 25));
time = (int)Math.Round(time / (speed / 1.25f));
bool involvesDecontamination = map switch
{
@@ -122,38 +115,23 @@ public class RoomRusher : RoleBase
};
if (involvesDecontamination)
{
int decontaminationTime = Options.ChangeDecontaminationTime.GetBool()
? map == MapNames.Polus
? Options.DecontaminationTimeOnPolus.GetInt() + Options.DecontaminationDoorOpenTimeOnPolus.GetInt()
: Options.DecontaminationTimeOnMiraHQ.GetInt() + Options.DecontaminationDoorOpenTimeOnMiraHQ.GetInt()
: 6;
if (SubmergedCompatibility.IsSubmerged()) decontaminationTime = 3;
time += decontaminationTime + 3;
}
time += 2;
switch (map)
{
case MapNames.Fungle when RoomGoal == SystemTypes.Laboratory || previous == SystemTypes.Laboratory:
time += (int)(8 / speed);
break;
case MapNames.Polus when (RoomGoal == SystemTypes.Laboratory && previous is not SystemTypes.Storage and not SystemTypes.Specimens and not SystemTypes.Office) || (previous == SystemTypes.Laboratory && RoomGoal is not SystemTypes.Office and not SystemTypes.Storage and not SystemTypes.Electrical and not SystemTypes.Specimens):
time -= (int)(5 * speed);
break;
case MapNames.Airship when previous == SystemTypes.GapRoom:
time *= RoomGoal switch
case MapNames.Airship:
time += previous switch
{
SystemTypes.MeetingRoom => 6,
SystemTypes.Brig or SystemTypes.VaultRoom or SystemTypes.Records or SystemTypes.Showers or SystemTypes.Lounge => 3,
SystemTypes.Engine or SystemTypes.CargoBay or SystemTypes.Medical => 2,
_ => 1
SystemTypes.Engine => 3,
SystemTypes.MainHall => 2,
_ => 0
};
break;
}
var maxTime = (int)Math.Ceiling(32 / speed);
TimeLeft = Math.Clamp((int)Math.Round(time * GlobalTimeMultiplier.GetFloat()), 6, maxTime);
time += GlobalTimeAddition.GetInt();
if (time < 6) time = 6;
Logger.Info($"Goal = from: {Translator.GetString(previous.ToString())} ({previous}), to: {Translator.GetString(RoomGoal.ToString())} ({RoomGoal}) - Time: {TimeLeft} ({map})", "Room Rusher");
LocateArrow.RemoveAllTarget(RoomRusherId);
LocateArrow.Add(RoomRusherId, goalPos);