diff --git a/Gamemodes/RRTimeTester.cs b/Gamemodes/RRTimeTester.cs
new file mode 100644
index 000000000..ec305f140
--- /dev/null
+++ b/Gamemodes/RRTimeTester.cs
@@ -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>{otherSystemTypesName}";
+ 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 = $"{otherSystemTypesName}\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>TEST COMPLETE";
+ }
+}*/
\ No newline at end of file
diff --git a/Gamemodes/RoomRush.cs b/Gamemodes/RoomRush.cs
index 2f715fadf..6b7be191a 100644
--- a/Gamemodes/RoomRush.cs
+++ b/Gamemodes/RoomRush.cs
@@ -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> 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> 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");
diff --git a/Modules/CustomRoleSelector.cs b/Modules/CustomRoleSelector.cs
index f880cea81..9ef5294e7 100644
--- a/Modules/CustomRoleSelector.cs
+++ b/Modules/CustomRoleSelector.cs
@@ -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():
diff --git a/Patches/HudPatch.cs b/Patches/HudPatch.cs
index 40ac211d2..b827db214 100644
--- a/Patches/HudPatch.cs
+++ b/Patches/HudPatch.cs
@@ -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(),
diff --git a/Patches/PlayerJoinAndLeftPatch.cs b/Patches/PlayerJoinAndLeftPatch.cs
index e8493bc5a..b0f22f092 100644
--- a/Patches/PlayerJoinAndLeftPatch.cs
+++ b/Patches/PlayerJoinAndLeftPatch.cs
@@ -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)
diff --git a/Resources/Lang/en_US.jsonc b/Resources/Lang/en_US.jsonc
index 4d5c1a7cd..a174e91a2 100644
--- a/Resources/Lang/en_US.jsonc
+++ b/Resources/Lang/en_US.jsonc
@@ -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}",
diff --git a/Roles/Standard/Neutral/Benign/RoomRusher.cs b/Roles/Standard/Neutral/Benign/RoomRusher.cs
index b1330df8c..2cfd03666 100644
--- a/Roles/Standard/Neutral/Benign/RoomRusher.cs
+++ b/Roles/Standard/Neutral/Benign/RoomRusher.cs
@@ -14,9 +14,8 @@ public class RoomRusher : RoleBase
public static bool On;
private static HashSet 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);