mirror of
https://github.com/Gurge44/EndlessHostRoles.git
synced 2026-10-19 15:51:58 +00:00
improve Room Rush time limits (manually tested every single combination on every map)
This commit is contained in:
1 parent
6a60788e82
commit
9146493ab4
7 files changed
+650
-140
No files matched your search
@@ -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
@@ -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");
|
||||
|
||||
@@ -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():
|
||||
|
||||
@@ -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(),
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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>",
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in new issue
Block a user