# Copy csproj and restore.
COPY src/Impostor.Server/Impostor.Server.csproj ./src/Impostor.Server/Impostor.Server.csproj
+COPY src/Impostor.Api.Innersloth.Generator/Impostor.Api.Innersloth.Generator.csproj ./src/Impostor.Api.Innersloth.Generator/Impostor.Api.Innersloth.Generator.csproj
COPY src/Impostor.Api/Impostor.Api.csproj ./src/Impostor.Api/Impostor.Api.csproj
COPY src/Directory.Build.props ./src/Directory.Build.props
*) echo "unsupported architecture"; exit 1 ;; \
esac && \
dotnet restore -r "$NETCORE_PLATFORM" ./src/Impostor.Server/Impostor.Server.csproj && \
+ dotnet restore -r "$NETCORE_PLATFORM" ./src/Impostor.Api.Innersloth.Generator/Impostor.Api.Innersloth.Generator.csproj && \
dotnet restore -r "$NETCORE_PLATFORM" ./src/Impostor.Api/Impostor.Api.csproj
# Copy everything else.
--- /dev/null
+using System.Diagnostics.CodeAnalysis;
+using System.Globalization;
+using System.Numerics;
+
+namespace Impostor.Api.Innersloth.Generator;
+
+internal static class Extensions
+{
+ public static string NormalizePath(this string path)
+ {
+ return path.Replace("\\", "/");
+ }
+
+ public static bool TryTrimStart(this string text, string value, [NotNullWhen(true)] out string? result)
+ {
+ if (text.StartsWith(value))
+ {
+ result = text[value.Length..];
+ return true;
+ }
+
+ result = null;
+ return false;
+ }
+
+ public static string ToCSharpString(this Vector2 value)
+ {
+ return $"new Vector2({value.X.ToString(CultureInfo.InvariantCulture)}f, {value.Y.ToString(CultureInfo.InvariantCulture)}f)";
+ }
+}
--- /dev/null
+using System.Collections.Immutable;
+using System.Linq;
+using Microsoft.CodeAnalysis;
+
+namespace Impostor.Api.Innersloth.Generator.Generators;
+
+public abstract class BaseGenerator
+{
+ protected SourceProductionContext _sourceProductionContext;
+ protected ImmutableArray<(string RelativePath, string Content)> _files;
+
+ protected BaseGenerator(SourceProductionContext sourceProductionContext, ImmutableArray<(string RelativePath, string Content)> files)
+ {
+ _sourceProductionContext = sourceProductionContext;
+ _files = files;
+ }
+
+ protected string GetFileContent(string path)
+ {
+ return _files.Single(x => x.RelativePath == path).Content;
+ }
+}
--- /dev/null
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Text.Json;
+using CSharpPoet;
+using Microsoft.CodeAnalysis;
+
+namespace Impostor.Api.Innersloth.Generator.Generators;
+
+public sealed class EnumGenerator : BaseGenerator
+{
+ public EnumGenerator(SourceProductionContext sourceProductionContext, ImmutableArray<(string RelativePath, string Content)> files) : base(sourceProductionContext, files)
+ {
+ }
+
+ public void Generate(string name, string? @namespace = null, string? sourceName = null, bool flags = false, CSharpEnumUnderlyingType underlyingType = CSharpEnumUnderlyingType.Int)
+ {
+ var dictionary = JsonSerializer.Deserialize<Dictionary<string, long>>(GetFileContent($"enums/{sourceName ?? name}.json"))!;
+
+ var @enum = new CSharpEnum(name, underlyingType);
+
+ foreach (var pair in dictionary)
+ {
+ var value = flags && pair.Value > 0
+ ? $"1 << {Math.Log(pair.Value, 2)}"
+ : pair.Value.ToString();
+
+ @enum.Members.Add(new CSharpEnum.Member(pair.Key, value));
+ }
+
+ if (flags)
+ {
+ @enum.Attributes.Add(new CSharpAttribute("System.FlagsAttribute"));
+ }
+
+ var source = new CSharpFile(@namespace ?? "Impostor.Api.Innersloth") { @enum }.ToString();
+ _sourceProductionContext.AddSource(name, source);
+ }
+}
--- /dev/null
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Globalization;
+using System.Numerics;
+using System.Text.Json;
+using CSharpPoet;
+using Microsoft.CodeAnalysis;
+
+namespace Impostor.Api.Innersloth.Generator.Generators;
+
+public sealed class MapDataGenerator : BaseGenerator
+{
+ public MapDataGenerator(SourceProductionContext sourceProductionContext, ImmutableArray<(string RelativePath, string Content)> files) : base(sourceProductionContext, files)
+ {
+ }
+
+ private T? Deserialize<T>(string name, string fileName)
+ {
+ return JsonSerializer.Deserialize<T>(
+ GetFileContent($"maps/{name}/{fileName}.json"),
+ new JsonSerializerOptions
+ {
+ PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
+ Converters =
+ {
+ new Vector2Converter(),
+ },
+ }
+ );
+ }
+
+ public void Generate(string name)
+ {
+ var className = name + "Data";
+
+ var spawnInfo = Deserialize<SpawnInfo>(name, "spawn")!;
+ var tasks = Deserialize<Dictionary<int, TaskInfo>>(name, "tasks")!;
+ var vents = Deserialize<Dictionary<int, VentInfo>>(name, "vents")!;
+ var doors = Deserialize<Dictionary<int, DoorInfo>>(name, "doors")!;
+
+ var ventsData = new DictionaryData("VentData", "Vents", writer =>
+ {
+ foreach (var pair in vents)
+ {
+ var id = pair.Key;
+ var vent = pair.Value;
+
+ var connections = "";
+ if (vent.Left != null) connections += ", left: " + vent.Left.Value;
+ if (vent.Center != null) connections += ", center: " + vent.Center.Value;
+ if (vent.Right != null) connections += ", right: " + vent.Right.Value;
+
+ writer.WriteLine($"[{id}] = new(this, {id}, \"{vent.Name}\", {vent.Position.ToCSharpString()}{connections}),");
+ }
+ });
+
+ var tasksData = new DictionaryData("TaskData", "Tasks", writer =>
+ {
+ foreach (var pair in tasks)
+ {
+ var id = pair.Key;
+ var task = pair.Value;
+
+ writer.WriteLine($"[{id}] = new({id}, TaskTypes.{task.TaskType}, TaskCategories.{task.Length}Task),");
+ }
+ });
+
+ var doorsData = new DictionaryData("DoorData", "Doors", writer =>
+ {
+ foreach (var pair in doors)
+ {
+ var id = pair.Key;
+ var door = pair.Value;
+
+ writer.WriteLine($"[{id}] = new({id}, SystemTypes.{door.Room}, {door.Position.ToCSharpString()}),");
+ }
+ });
+
+ var constructor = new CSharpMethod(Visibility.Internal, className, ".ctor")
+ {
+ Body = writer =>
+ {
+ ventsData.WriteInitializer(writer);
+ writer.WriteLine();
+ tasksData.WriteInitializer(writer);
+ writer.WriteLine();
+ doorsData.WriteInitializer(writer);
+ },
+ };
+
+ var @class = new CSharpClass(className)
+ {
+ IsSealed = true,
+ Extends = { "MapData" },
+ Members =
+ {
+ constructor,
+
+ ventsData.CreateProperty(),
+ tasksData.CreateProperty(),
+ doorsData.CreateProperty(),
+
+ new CSharpBlankLine(),
+
+ CreateSimpleProperty("float", "SpawnRadius", spawnInfo.SpawnRadius.ToString(CultureInfo.InvariantCulture) + "f"),
+ CreateSimpleProperty("Vector2", "InitialSpawnCenter", spawnInfo.InitialSpawnCenter.ToCSharpString()),
+ CreateSimpleProperty("Vector2", "MeetingSpawnCenter", spawnInfo.MeetingSpawnCenter.ToCSharpString()),
+ CreateSimpleProperty("Vector2", "MeetingSpawnCenter2", spawnInfo.MeetingSpawnCenter2.ToCSharpString()),
+ },
+ };
+
+ var source = new CSharpFile("Impostor.Api.Innersloth.Maps")
+ {
+ Usings = { "System.Collections.Generic", "System.Numerics" },
+ Members = { @class },
+ }.ToString();
+ _sourceProductionContext.AddSource(className, source);
+ }
+
+ private static CSharpProperty CreateSimpleProperty(string type, string name, string value)
+ {
+ return new CSharpProperty(type, name)
+ {
+ Getter = new CSharpProperty.Accessor { Body = writer => writer.Write(value + ";") },
+ IsOverride = true,
+ };
+ }
+
+ private sealed class DictionaryData
+ {
+ private readonly string _keyType;
+ private readonly string _valueType;
+ private readonly string _name;
+ private readonly Action<CodeWriter> _body;
+
+ public DictionaryData(string keyType, string valueType, string name, Action<CodeWriter> body)
+ {
+ _keyType = keyType;
+ _valueType = valueType;
+ _name = name;
+ _body = body;
+ }
+
+ public DictionaryData(string valueType, string name, Action<CodeWriter> body) : this("int", valueType, name, body)
+ {
+ }
+
+ public void WriteInitializer(CodeWriter writer)
+ {
+ writer.WriteLine($"{_name} = new Dictionary<{_keyType}, {_valueType}>");
+ writer.WriteLine("{");
+
+ using (writer.Indent())
+ {
+ _body(writer);
+ }
+
+ writer.WriteLine("}.AsReadOnly();");
+ }
+
+ public CSharpProperty CreateProperty()
+ {
+ return new CSharpProperty($"IReadOnlyDictionary<{_keyType}, {_valueType}>", _name)
+ {
+ Getter = new CSharpProperty.Accessor(),
+ IsOverride = true,
+ };
+ }
+ }
+
+ public sealed class SpawnInfo
+ {
+ public required Vector2 InitialSpawnCenter { get; init; }
+ public required Vector2 MeetingSpawnCenter { get; init; }
+ public required Vector2 MeetingSpawnCenter2 { get; init; }
+ public required float SpawnRadius { get; init; }
+ }
+
+ public sealed class TaskInfo
+ {
+ public required string Type { get; init; }
+ public required string TaskType { get; init; }
+ public required string Length { get; init; }
+ public required TaskConsole[] Consoles { get; init; }
+ }
+
+ public sealed class TaskConsole
+ {
+ public required int Id { get; init; }
+ public required string Room { get; init; }
+ public required Vector2 Position { get; init; }
+ public required float UsableDistance { get; init; }
+ }
+
+ public sealed class VentInfo
+ {
+ public required string Name { get; init; }
+ public required Vector2 Position { get; init; }
+ public required int? Left { get; init; }
+ public required int? Center { get; init; }
+ public required int? Right { get; init; }
+ }
+
+ public sealed class DoorInfo
+ {
+ public required string Room { get; init; }
+ public required Vector2 Position { get; init; }
+ }
+}
--- /dev/null
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>netstandard2.0</TargetFramework>
+ <LangVersion>latest</LangVersion>
+ <DebugType>embedded</DebugType>
+ <Nullable>enable</Nullable>
+ <EnforceExtendedAnalyzerRules>true</EnforceExtendedAnalyzerRules>
+ <IsRoslynComponent>true</IsRoslynComponent>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="4.7.0" PrivateAssets="all" />
+ <PackageReference Include="Microsoft.CodeAnalysis.Analyzers" Version="3.3.4" PrivateAssets="all" />
+ <PackageReference Include="PolySharp" Version="1.14.0" PrivateAssets="all" />
+
+ <PackageReference Include="System.Text.Json" Version="8.0.0" PrivateAssets="all" GeneratePathProperty="true" />
+ <PackageReference Include="System.Text.Encodings.Web" Version="8.0.0" PrivateAssets="all" GeneratePathProperty="true" />
+ <PackageReference Include="Microsoft.Bcl.AsyncInterfaces" Version="8.0.0" PrivateAssets="all" GeneratePathProperty="true" />
+
+ <PackageReference Include="CSharpPoet" Version="0.3.0" PrivateAssets="all" GeneratePathProperty="true" />
+ </ItemGroup>
+
+ <PropertyGroup>
+ <GetTargetPathDependsOn>$(GetTargetPathDependsOn);GetDependencyTargetPaths</GetTargetPathDependsOn>
+ </PropertyGroup>
+
+ <Target Name="GetDependencyTargetPaths">
+ <ItemGroup>
+ <TargetPathWithTargetPlatformMoniker Include="$(PkgSystem_Text_Json)\lib\netstandard2.0\*.dll" IncludeRuntimeDependency="false" />
+ <TargetPathWithTargetPlatformMoniker Include="$(PkgSystem_Text_Encodings_Web)\lib\netstandard2.0\*.dll" IncludeRuntimeDependency="false" />
+ <TargetPathWithTargetPlatformMoniker Include="$(PKGMicrosoft_Bcl_AsyncInterfaces)\lib\netstandard2.0\*.dll" IncludeRuntimeDependency="false" />
+
+ <TargetPathWithTargetPlatformMoniker Include="$(PkgCSharpPoet)\lib\netstandard2.0\*.dll" IncludeRuntimeDependency="false" />
+ </ItemGroup>
+ </Target>
+
+</Project>
--- /dev/null
+{
+ "$schema": "https://json.schemastore.org/launchsettings.json",
+ "profiles": {
+ "Generator": {
+ "commandName": "DebugRoslynComponent",
+ "targetProject": "../Impostor.Api/Impostor.Api.csproj"
+ }
+ }
+}
--- /dev/null
+using System;
+using System.Diagnostics.CodeAnalysis;
+using CSharpPoet;
+using Impostor.Api.Innersloth.Generator.Generators;
+using Microsoft.CodeAnalysis;
+
+namespace Impostor.Api.Innersloth.Generator;
+
+[Generator(LanguageNames.CSharp)]
+public sealed class SourceGenerator : IIncrementalGenerator
+{
+ private const string DataPath = "Innersloth/Data/";
+
+ private readonly record struct Options(string ProjectDirectory)
+ {
+ public bool TryGetRelativePath(string path, [NotNullWhen(true)] out string? relativePath)
+ {
+ if (
+ path.NormalizePath().TryTrimStart(ProjectDirectory, out relativePath) &&
+ relativePath.TryTrimStart(DataPath, out relativePath)
+ )
+ {
+ return true;
+ }
+
+ relativePath = null;
+ return false;
+ }
+ }
+
+ public void Initialize(IncrementalGeneratorInitializationContext context)
+ {
+ var optionsProvider = context.AnalyzerConfigOptionsProvider
+ .Select((analyzerConfigOptions, _) =>
+ {
+ if (!analyzerConfigOptions.GlobalOptions.TryGetValue("build_property.projectdir", out var projectDirectory))
+ {
+ throw new Exception("Couldn't get project directory");
+ }
+
+ return new Options(projectDirectory.NormalizePath());
+ });
+
+ var filesProvider = context.AdditionalTextsProvider.Combine(optionsProvider)
+ .Where(static pair =>
+ {
+ var (file, options) = pair;
+ return options.TryGetRelativePath(file.Path, out var relativePath) && relativePath.EndsWith(".json");
+ })
+ .Select(static (pair, cancellationToken) =>
+ {
+ var (file, options) = pair;
+
+ if (!options.TryGetRelativePath(file.Path, out var relativePath))
+ {
+ throw new InvalidOperationException();
+ }
+
+ return (
+ RelativePath: relativePath,
+ Content: file.GetText(cancellationToken)!.ToString()
+ );
+ })
+ .Collect();
+
+ context.RegisterSourceOutput(filesProvider, (spc, files) =>
+ {
+ if (files.IsEmpty)
+ {
+ throw new InvalidOperationException($"No json files found in Impostor.Api/{DataPath}");
+ }
+
+ var enumGenerator = new EnumGenerator(spc, files);
+
+ enumGenerator.Generate("ColorType", "Impostor.Api.Innersloth.Customization");
+
+ enumGenerator.Generate("DisconnectReason", sourceName: "DisconnectReasons");
+ enumGenerator.Generate("GameKeywords", flags: true, underlyingType: CSharpEnumUnderlyingType.UnsignedInt);
+ enumGenerator.Generate("GameOverReason", underlyingType: CSharpEnumUnderlyingType.Byte);
+ enumGenerator.Generate("Platforms");
+ enumGenerator.Generate("RoleTypes", underlyingType: CSharpEnumUnderlyingType.UnsignedShort);
+ enumGenerator.Generate("StringNames");
+ enumGenerator.Generate("SystemTypes", underlyingType: CSharpEnumUnderlyingType.Byte);
+ enumGenerator.Generate("Language", sourceName: "SupportedLangs");
+ enumGenerator.Generate("TaskTypes");
+
+ enumGenerator.Generate("RpcCalls", "Impostor.Api.Net.Inner", underlyingType: CSharpEnumUnderlyingType.Byte);
+
+ var mapDataGenerator = new MapDataGenerator(spc, files);
+
+ var mapNames = new[] { "Skeld", "Mira", "April", "Polus", "Airship", "Fungle" };
+ foreach (var mapName in mapNames)
+ {
+ mapDataGenerator.Generate(mapName);
+ }
+ });
+ }
+}
--- /dev/null
+using System;
+using System.Numerics;
+using System.Text.Json;
+using System.Text.Json.Serialization;
+
+namespace Impostor.Api.Innersloth.Generator;
+
+public class Vector2Converter : JsonConverter<Vector2>
+{
+ public override Vector2 Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
+ {
+ if (reader.TokenType != JsonTokenType.StartObject) throw new JsonException();
+
+ float x = 0;
+ float y = 0;
+
+ while (reader.Read())
+ {
+ if (reader.TokenType == JsonTokenType.EndObject) break;
+
+ switch (reader.GetString())
+ {
+ case "x":
+ reader.Read();
+ x = reader.GetSingle();
+ break;
+
+ case "y":
+ reader.Read();
+ y = reader.GetSingle();
+ break;
+ }
+ }
+
+ return new Vector2(x, y);
+ }
+
+ public override void Write(Utf8JsonWriter writer, Vector2 value, JsonSerializerOptions options)
+ {
+ throw new NotSupportedException();
+ }
+}
--- /dev/null
+{
+ "version": 1,
+ "dependencies": {
+ ".NETStandard,Version=v2.0": {
+ "CSharpPoet": {
+ "type": "Direct",
+ "requested": "[0.3.0, )",
+ "resolved": "0.3.0",
+ "contentHash": "3QDh9rMuiNhMtNWOLj0FItiZruON7lj3zD0CXC9IHq4JWpF5OjbaZ2s1X0u6gftE73KCoTezXIgKvxacps78Fw=="
+ },
+ "Microsoft.Bcl.AsyncInterfaces": {
+ "type": "Direct",
+ "requested": "[8.0.0, )",
+ "resolved": "8.0.0",
+ "contentHash": "3WA9q9yVqJp222P3x1wYIGDAkpjAku0TMUaaQV22g6L67AI0LdOIrVS7Ht2vJfLHGSPVuqN94vIr15qn+HEkHw==",
+ "dependencies": {
+ "System.Threading.Tasks.Extensions": "4.5.4"
+ }
+ },
+ "Microsoft.CodeAnalysis.Analyzers": {
+ "type": "Direct",
+ "requested": "[3.3.4, )",
+ "resolved": "3.3.4",
+ "contentHash": "AxkxcPR+rheX0SmvpLVIGLhOUXAKG56a64kV9VQZ4y9gR9ZmPXnqZvHJnmwLSwzrEP6junUF11vuc+aqo5r68g=="
+ },
+ "Microsoft.CodeAnalysis.CSharp": {
+ "type": "Direct",
+ "requested": "[4.7.0, )",
+ "resolved": "4.7.0",
+ "contentHash": "JHCP2L6lB0oJ3tQoHkC67SFZxW+KbJVOnAo+6L01K5r/NlBlSUhTk5nUAldWhTVwGdzqNeHqGtnEqpsCmGSwQA==",
+ "dependencies": {
+ "Microsoft.CodeAnalysis.Common": "[4.7.0]"
+ }
+ },
+ "NETStandard.Library": {
+ "type": "Direct",
+ "requested": "[2.0.3, )",
+ "resolved": "2.0.3",
+ "contentHash": "st47PosZSHrjECdjeIzZQbzivYBJFv6P2nv4cj2ypdI204DO+vZ7l5raGMiX4eXMJ53RfOIg+/s4DHVZ54Nu2A==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0"
+ }
+ },
+ "PolySharp": {
+ "type": "Direct",
+ "requested": "[1.14.0, )",
+ "resolved": "1.14.0",
+ "contentHash": "3K6beiIeVO0hOlHCHv2jgGW7UH3OXsOIiEW60CHpqGvbrHyy4iQfGkCOBtI92PDCaA8XC4ZM3+02g2qenRnHOA=="
+ },
+ "System.Text.Encodings.Web": {
+ "type": "Direct",
+ "requested": "[8.0.0, )",
+ "resolved": "8.0.0",
+ "contentHash": "yev/k9GHAEGx2Rg3/tU6MQh4HGBXJs70y7j1LaM1i/ER9po+6nnQ6RRqTJn1E7Xu0fbIFK80Nh5EoODxrbxwBQ==",
+ "dependencies": {
+ "System.Buffers": "4.5.1",
+ "System.Memory": "4.5.5",
+ "System.Runtime.CompilerServices.Unsafe": "6.0.0"
+ }
+ },
+ "System.Text.Json": {
+ "type": "Direct",
+ "requested": "[8.0.0, )",
+ "resolved": "8.0.0",
+ "contentHash": "OdrZO2WjkiEG6ajEFRABTRCi/wuXQPxeV6g8xvUJqdxMvvuCCEk86zPla8UiIQJz3durtUEbNyY/3lIhS0yZvQ==",
+ "dependencies": {
+ "Microsoft.Bcl.AsyncInterfaces": "8.0.0",
+ "System.Buffers": "4.5.1",
+ "System.Memory": "4.5.5",
+ "System.Runtime.CompilerServices.Unsafe": "6.0.0",
+ "System.Text.Encodings.Web": "8.0.0",
+ "System.Threading.Tasks.Extensions": "4.5.4"
+ }
+ },
+ "Microsoft.CodeAnalysis.Common": {
+ "type": "Transitive",
+ "resolved": "4.7.0",
+ "contentHash": "pD5S14xMUebSGYe75kt0q/aaS/ftvktSo/pEv7aX7hNPHfdZS+SZeXvkvcffGxWkunYOyRF9m1oN7zzSdYj9dQ==",
+ "dependencies": {
+ "Microsoft.CodeAnalysis.Analyzers": "3.3.4",
+ "System.Collections.Immutable": "7.0.0",
+ "System.Memory": "4.5.5",
+ "System.Reflection.Metadata": "7.0.0",
+ "System.Runtime.CompilerServices.Unsafe": "6.0.0",
+ "System.Text.Encoding.CodePages": "7.0.0",
+ "System.Threading.Tasks.Extensions": "4.5.4"
+ }
+ },
+ "Microsoft.NETCore.Platforms": {
+ "type": "Transitive",
+ "resolved": "1.1.0",
+ "contentHash": "kz0PEW2lhqygehI/d6XsPCQzD7ff7gUJaVGPVETX611eadGsA3A877GdSlU0LRVMCTH/+P3o2iDTak+S08V2+A=="
+ },
+ "System.Buffers": {
+ "type": "Transitive",
+ "resolved": "4.5.1",
+ "contentHash": "Rw7ijyl1qqRS0YQD/WycNst8hUUMgrMH4FCn1nNm27M4VxchZ1js3fVjQaANHO5f3sN4isvP4a+Met9Y4YomAg=="
+ },
+ "System.Collections.Immutable": {
+ "type": "Transitive",
+ "resolved": "7.0.0",
+ "contentHash": "dQPcs0U1IKnBdRDBkrCTi1FoajSTBzLcVTpjO4MBCMC7f4pDOIPzgBoX8JjG7X6uZRJ8EBxsi8+DR1JuwjnzOQ==",
+ "dependencies": {
+ "System.Memory": "4.5.5",
+ "System.Runtime.CompilerServices.Unsafe": "6.0.0"
+ }
+ },
+ "System.Memory": {
+ "type": "Transitive",
+ "resolved": "4.5.5",
+ "contentHash": "XIWiDvKPXaTveaB7HVganDlOCRoj03l+jrwNvcge/t8vhGYKvqV+dMv6G4SAX2NoNmN0wZfVPTAlFwZcZvVOUw==",
+ "dependencies": {
+ "System.Buffers": "4.5.1",
+ "System.Numerics.Vectors": "4.4.0",
+ "System.Runtime.CompilerServices.Unsafe": "4.5.3"
+ }
+ },
+ "System.Numerics.Vectors": {
+ "type": "Transitive",
+ "resolved": "4.4.0",
+ "contentHash": "UiLzLW+Lw6HLed1Hcg+8jSRttrbuXv7DANVj0DkL9g6EnnzbL75EB7EWsw5uRbhxd/4YdG8li5XizGWepmG3PQ=="
+ },
+ "System.Reflection.Metadata": {
+ "type": "Transitive",
+ "resolved": "7.0.0",
+ "contentHash": "MclTG61lsD9sYdpNz9xsKBzjsmsfCtcMZYXz/IUr2zlhaTaABonlr1ESeompTgM+Xk+IwtGYU7/voh3YWB/fWw==",
+ "dependencies": {
+ "System.Collections.Immutable": "7.0.0",
+ "System.Memory": "4.5.5"
+ }
+ },
+ "System.Runtime.CompilerServices.Unsafe": {
+ "type": "Transitive",
+ "resolved": "6.0.0",
+ "contentHash": "/iUeP3tq1S0XdNNoMz5C9twLSrM/TH+qElHkXWaPvuNOt+99G75NrV0OS2EqHx5wMN7popYjpc8oTjC1y16DLg=="
+ },
+ "System.Text.Encoding.CodePages": {
+ "type": "Transitive",
+ "resolved": "7.0.0",
+ "contentHash": "LSyCblMpvOe0N3E+8e0skHcrIhgV2huaNcjUUEa8hRtgEAm36aGkRoC8Jxlb6Ra6GSfF29ftduPNywin8XolzQ==",
+ "dependencies": {
+ "System.Memory": "4.5.5",
+ "System.Runtime.CompilerServices.Unsafe": "6.0.0"
+ }
+ },
+ "System.Threading.Tasks.Extensions": {
+ "type": "Transitive",
+ "resolved": "4.5.4",
+ "contentHash": "zteT+G8xuGu6mS+mzDzYXbzS7rd3K6Fjb9RiZlYlJPam2/hU7JCBZBVEcywNuR+oZ1ncTvc/cq0faRr3P01OVg==",
+ "dependencies": {
+ "System.Runtime.CompilerServices.Unsafe": "4.5.3"
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
-using Impostor.Api.Innersloth;
+using Impostor.Api.Innersloth.Maps;
namespace Impostor.Api.Events.Player
{
/// <summary>
/// Gets the entered vent.
/// </summary>
- public IVent Vent { get; }
+ public VentData Vent { get; }
}
}
-using Impostor.Api.Innersloth;
+using Impostor.Api.Innersloth.Maps;
namespace Impostor.Api.Events.Player
{
/// <summary>
/// Gets the exited vent.
/// </summary>
- public IVent Vent { get; }
+ public VentData Vent { get; }
}
}
-using Impostor.Api.Innersloth;
+using Impostor.Api.Innersloth.Maps;
namespace Impostor.Api.Events.Player
{
/// <summary>
/// Gets the vent player moved to.
/// </summary>
- public IVent NewVent { get; }
+ public VentData NewVent { get; }
}
}
<PackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="7.0.0" />
<PackageReference Include="StyleCop.Analyzers" Version="1.2.0-beta.435" PrivateAssets="all" />
<PackageReference Include="Impostor.Hazel.Abstractions" Version="1.0.0" />
+
+ <ProjectReference Include="..\Impostor.Api.Innersloth.Generator\Impostor.Api.Innersloth.Generator.csproj" ReferenceOutputAssembly="false" OutputItemType="Analyzer" />
+ <AdditionalFiles Include="Innersloth/Data/**/*.json" />
</ItemGroup>
</Project>
+++ /dev/null
-namespace Impostor.Api.Innersloth.Customization
-{
- public enum ColorType
- {
- Red = 0,
- Blue = 1,
- Green = 2,
- Pink = 3,
- Orange = 4,
- Yellow = 5,
- Black = 6,
- White = 7,
- Purple = 8,
- Brown = 9,
- Cyan = 10,
- Lime = 11,
- Maroon = 12,
- Rose = 13,
- Banana = 14,
- Gray = 15,
- Tan = 16,
- Coral = 17,
- }
-}
--- /dev/null
+{
+ "0": "SkeldShipStatus",
+ "1": "MeetingHud",
+ "2": "LobbyBehaviour",
+ "3": "GameData",
+ "4": "PlayerControl",
+ "5": "MiraShipStatus",
+ "6": "PolusShipStatus",
+ "7": "ShipStatus",
+ "8": "AirshipStatus",
+ "9": "HideAndSeekManager",
+ "10": "NormalGameManager",
+ "13": "FungleShipStatus"
+}
\ No newline at end of file
--- /dev/null
+{
+ "Red": 0,
+ "Blue": 1,
+ "Green": 2,
+ "Pink": 3,
+ "Orange": 4,
+ "Yellow": 5,
+ "Black": 6,
+ "White": 7,
+ "Purple": 8,
+ "Brown": 9,
+ "Cyan": 10,
+ "Lime": 11,
+ "Maroon": 12,
+ "Rose": 13,
+ "Banana": 14,
+ "Gray": 15,
+ "Tan": 16,
+ "Coral": 17
+}
\ No newline at end of file
--- /dev/null
+{
+ "ExitGame": 0,
+ "GameFull": 1,
+ "GameStarted": 2,
+ "GameNotFound": 3,
+ "IncorrectVersion": 5,
+ "Banned": 6,
+ "Kicked": 7,
+ "Custom": 8,
+ "InvalidName": 9,
+ "Hacking": 10,
+ "NotAuthorized": 11,
+ "ConnectionLimit": 12,
+ "Destroy": 16,
+ "Error": 17,
+ "IncorrectGame": 18,
+ "ServerRequest": 19,
+ "ServerFull": 20,
+ "InternalPlayerMissing": 100,
+ "InternalNonceFailure": 101,
+ "InternalConnectionToken": 102,
+ "PlatformLock": 103,
+ "LobbyInactivity": 104,
+ "MatchmakerInactivity": 105,
+ "InvalidGameOptions": 106,
+ "NoServersAvailable": 107,
+ "QuickmatchDisabled": 108,
+ "TooManyGames": 109,
+ "QuickchatLock": 110,
+ "MatchmakerFull": 111,
+ "Sanctions": 112,
+ "ServerError": 113,
+ "SelfPlatformLock": 114,
+ "DuplicateConnectionDetected": 115,
+ "TooManyRequests": 116,
+ "FocusLostBackground": 207,
+ "IntentionalLeaving": 208,
+ "FocusLost": 209,
+ "NewConnection": 210,
+ "PlatformParentalControlsBlock": 211,
+ "PlatformUserBlock": 212,
+ "PlatformFailedToGetUserBlock": 213,
+ "ServerNotFound": 214,
+ "ClientTimeout": 215,
+ "Unknown": 255
+}
\ No newline at end of file
--- /dev/null
+{
+ "All": 0,
+ "Other": 1,
+ "SpanishLA": 2,
+ "Korean": 4,
+ "Russian": 8,
+ "Portuguese": 16,
+ "Arabic": 32,
+ "Filipino": 64,
+ "Polish": 128,
+ "English": 256,
+ "Japanese": 512,
+ "SpanishEU": 1024,
+ "Brazilian": 2048,
+ "Dutch": 4096,
+ "French": 8192,
+ "German": 16384,
+ "Italian": 32768,
+ "SChinese": 65536,
+ "TChinese": 131072,
+ "Irish": 262144
+}
\ No newline at end of file
--- /dev/null
+{
+ "HumansByVote": 0,
+ "HumansByTask": 1,
+ "ImpostorByVote": 2,
+ "ImpostorByKill": 3,
+ "ImpostorBySabotage": 4,
+ "ImpostorDisconnect": 5,
+ "HumansDisconnect": 6,
+ "HideAndSeek_ByTimer": 7,
+ "HideAndSeek_ByKills": 8
+}
\ No newline at end of file
--- /dev/null
+{
+ "Unknown": 0,
+ "StandaloneEpicPC": 1,
+ "StandaloneSteamPC": 2,
+ "StandaloneMac": 3,
+ "StandaloneWin10": 4,
+ "StandaloneItch": 5,
+ "IPhone": 6,
+ "Android": 7,
+ "Switch": 8,
+ "Xbox": 9,
+ "Playstation": 10
+}
\ No newline at end of file
--- /dev/null
+{
+ "Crewmate": 0,
+ "Impostor": 1,
+ "Scientist": 2,
+ "Engineer": 3,
+ "GuardianAngel": 4,
+ "Shapeshifter": 5,
+ "CrewmateGhost": 6,
+ "ImpostorGhost": 7
+}
\ No newline at end of file
--- /dev/null
+{
+ "PlayAnimation": 0,
+ "CompleteTask": 1,
+ "SyncSettings": 2,
+ "SetInfected": 3,
+ "Exiled": 4,
+ "CheckName": 5,
+ "SetName": 6,
+ "CheckColor": 7,
+ "SetColor": 8,
+ "SetHat": 9,
+ "SetSkin": 10,
+ "ReportDeadBody": 11,
+ "MurderPlayer": 12,
+ "SendChat": 13,
+ "StartMeeting": 14,
+ "SetScanner": 15,
+ "SendChatNote": 16,
+ "SetPet": 17,
+ "SetStartCounter": 18,
+ "EnterVent": 19,
+ "ExitVent": 20,
+ "SnapTo": 21,
+ "CloseMeeting": 22,
+ "VotingComplete": 23,
+ "CastVote": 24,
+ "ClearVote": 25,
+ "AddVote": 26,
+ "CloseDoorsOfType": 27,
+ "SetTasks": 29,
+ "ClimbLadder": 31,
+ "UsePlatform": 32,
+ "SendQuickChat": 33,
+ "BootFromVent": 34,
+ "UpdateSystem": 35,
+ "SetVisor": 36,
+ "SetNamePlate": 37,
+ "SetLevel": 38,
+ "SetHatStr": 39,
+ "SetSkinStr": 40,
+ "SetPetStr": 41,
+ "SetVisorStr": 42,
+ "SetNamePlateStr": 43,
+ "SetRole": 44,
+ "ProtectPlayer": 45,
+ "Shapeshift": 46,
+ "CheckMurder": 47,
+ "CheckProtect": 48,
+ "Pet": 49,
+ "CancelPet": 50,
+ "CheckZipline": 51,
+ "UseZipline": 52,
+ "TriggerSpores": 53,
+ "CheckSpore": 54,
+ "CheckShapeshift": 55,
+ "RejectShapeshift": 56,
+ "LobbyTimeExpiring": 60,
+ "ExtendLobbyTimer": 61
+}
\ No newline at end of file
--- /dev/null
+{
+ "None": 0,
+ "BackButton": 1,
+ "AvailableGamesLabel": 2,
+ "CreateGameButton": 3,
+ "FindGameButton": 4,
+ "EnterCode": 5,
+ "GhostIgnoreTasks": 6,
+ "GhostDoTasks": 7,
+ "GhostImpostor": 8,
+ "ImpostorTask": 9,
+ "FakeTasks": 10,
+ "TaskComplete": 11,
+ "ExileTextSP": 12,
+ "ExileTextSN": 13,
+ "ExileTextPP": 14,
+ "ExileTextPN": 15,
+ "NoExileSkip": 16,
+ "NoExileTie": 17,
+ "ImpostorsRemainS": 18,
+ "ImpostorsRemainP": 19,
+ "Hallway": 20,
+ "Storage": 21,
+ "Cafeteria": 22,
+ "Reactor": 23,
+ "UpperEngine": 24,
+ "Nav": 25,
+ "Admin": 26,
+ "Electrical": 27,
+ "LifeSupp": 28,
+ "Shields": 29,
+ "MedBay": 30,
+ "Security": 31,
+ "Weapons": 32,
+ "LowerEngine": 33,
+ "Comms": 34,
+ "Decontamination": 35,
+ "Launchpad": 36,
+ "LockerRoom": 37,
+ "Laboratory": 38,
+ "Balcony": 39,
+ "Office": 40,
+ "Greenhouse": 41,
+ "DivertPowerTo": 42,
+ "AcceptDivertedPower": 43,
+ "SubmitScan": 44,
+ "PrimeShields": 45,
+ "FuelEngines": 46,
+ "ChartCourse": 47,
+ "StartReactor": 48,
+ "SwipeCard": 49,
+ "ClearAsteroids": 50,
+ "UploadData": 51,
+ "DownloadData": 52,
+ "InspectSample": 53,
+ "EmptyChute": 54,
+ "EmptyGarbage": 55,
+ "AlignEngineOutput": 56,
+ "FixWiring": 57,
+ "CalibrateDistributor": 58,
+ "UnlockManifolds": 59,
+ "ResetReactor": 60,
+ "FixLights": 61,
+ "FixComms": 62,
+ "RestoreOxy": 63,
+ "CleanO2Filter": 64,
+ "StabilizeSteering": 65,
+ "AssembleArtifact": 66,
+ "SortSamples": 67,
+ "MeasureWeather": 68,
+ "EnterIdCode": 69,
+ "HowToPlayText1": 70,
+ "HowToPlayText2": 71,
+ "HowToPlayText5": 72,
+ "HowToPlayText6": 73,
+ "HowToPlayText7": 74,
+ "HowToPlayText81": 75,
+ "HowToPlayText82": 76,
+ "NumImpostorsS": 77,
+ "NumImpostorsP": 78,
+ "Crewmate": 79,
+ "Impostor": 80,
+ "Victory": 81,
+ "Defeat": 82,
+ "CrewmatesDisconnected": 83,
+ "ImpostorDisconnected": 84,
+ "HowToPlayText41": 85,
+ "HowToPlayText42": 86,
+ "HowToPlayText43": 87,
+ "HowToPlayText44": 88,
+ "HowToPlayTextMap": 89,
+ "HowToPlayTextCrew1": 90,
+ "HowToPlayTextCrew2": 91,
+ "HowToPlayTextCrew3": 92,
+ "HowToPlayTextCrew4": 93,
+ "HowToPlayTextCrew5": 94,
+ "HowToPlayTextCrew6": 95,
+ "HowToPlayTextImp1": 96,
+ "HowToPlayTextImp2": 97,
+ "HowToPlayTextImp3": 98,
+ "HowToPlayTextImp4": 99,
+ "HowToPlayTextImp5": 100,
+ "HowToPlayTextImp6": 101,
+ "HowToPlayTextImp7": 102,
+ "SettingsGeneral": 103,
+ "SettingsControls": 104,
+ "SettingsSound": 105,
+ "SettingsGraphics": 106,
+ "SettingsData": 107,
+ "SettingsCensorChat": 108,
+ "SettingsMusic": 109,
+ "SettingsSFX": 110,
+ "SettingsOn": 111,
+ "SettingsOff": 112,
+ "SettingsSendTelemetry": 113,
+ "SettingsControlMode": 114,
+ "SettingsTouchMode": 115,
+ "SettingsJoystickMode": 116,
+ "SettingsKeyboardMode": 117,
+ "SettingsFullscreen": 118,
+ "SettingsResolution": 119,
+ "SettingsApply": 120,
+ "SettingsPersonalizeAds": 121,
+ "SettingsLanguage": 122,
+ "SettingsJoystickSize": 123,
+ "SettingsMouseMode": 124,
+ "PlayerColor": 125,
+ "PlayerHat": 126,
+ "PlayerSkin": 127,
+ "PlayerPet": 128,
+ "GameSettings": 129,
+ "GameRecommendedSettings": 130,
+ "GameCustomSettings": 131,
+ "GameMapName": 132,
+ "GameNumImpostors": 133,
+ "GameNumMeetings": 134,
+ "GameDiscussTime": 135,
+ "GameVotingTime": 136,
+ "GamePlayerSpeed": 137,
+ "GameCrewLight": 138,
+ "GameImpostorLight": 139,
+ "GameKillCooldown": 140,
+ "GameKillDistance": 141,
+ "GameCommonTasks": 142,
+ "GameLongTasks": 143,
+ "GameShortTasks": 144,
+ "MatchMapName": 145,
+ "MatchLanguage": 146,
+ "MatchImpostors": 147,
+ "MatchMaxPlayers": 148,
+ "Cancel": 149,
+ "Confirm": 150,
+ "Limit": 151,
+ "RoomCode": 152,
+ "LeaveGame": 153,
+ "ReturnToGame": 154,
+ "LocalHelp": 155,
+ "OnlineHelp": 156,
+ "SettingsVSync": 157,
+ "EmergencyCount": 158,
+ "EmergencyNotReady": 159,
+ "EmergencyDuringCrisis": 160,
+ "EmergencyRequested": 161,
+ "GameEmergencyCooldown": 162,
+ "BuyBeverage": 163,
+ "WeatherEta": 164,
+ "WeatherComplete": 165,
+ "ProcessData": 166,
+ "RunDiagnostics": 167,
+ "WaterPlants": 168,
+ "PickAnomaly": 169,
+ "WaterPlantsGetCan": 170,
+ "AuthOfficeOkay": 171,
+ "AuthCommsOkay": 172,
+ "AuthOfficeActive": 173,
+ "AuthCommsActive": 174,
+ "AuthOfficeNotActive": 175,
+ "AuthCommsNotActive": 176,
+ "SecLogEntry": 177,
+ "EnterName": 178,
+ "SwipeCardPleaseSwipe": 179,
+ "SwipeCardBadRead": 180,
+ "SwipeCardTooFast": 181,
+ "SwipeCardTooSlow": 182,
+ "SwipeCardAccepted": 183,
+ "ReactorHoldToStop": 184,
+ "ReactorWaiting": 185,
+ "ReactorNominal": 186,
+ "MeetingWhoIsTitle": 187,
+ "MeetingVotingBegins": 188,
+ "MeetingVotingEnds": 189,
+ "MeetingVotingResults": 190,
+ "MeetingProceeds": 191,
+ "MeetingHasVoted": 192,
+ "DataPolicyTitle": 193,
+ "DataPolicyText": 194,
+ "DataPolicyWhat": 195,
+ "AdPolicyTitle": 196,
+ "AdPolicyText": 197,
+ "Accept": 198,
+ "RemoveAds": 199,
+ "SwipeCardPleaseInsert": 200,
+ "LogNorth": 201,
+ "LogSouthEast": 202,
+ "LogSouthWest": 203,
+ "SettingShort": 204,
+ "SettingMedium": 205,
+ "SettingLong": 206,
+ "SamplesPress": 207,
+ "SamplesAdding": 208,
+ "SamplesSelect": 209,
+ "SamplesThanks": 210,
+ "SamplesComplete": 211,
+ "AstDestroyed": 212,
+ "TaskTestTitle": 213,
+ "BeginDiagnostics": 214,
+ "UserLeftGame": 215,
+ "GameStarting": 216,
+ "Tasks": 217,
+ "StatsTitle": 218,
+ "StatsBodiesReported": 219,
+ "StatsEmergenciesCalled": 220,
+ "StatsTasksCompleted": 221,
+ "StatsAllTasksCompleted": 222,
+ "StatsSabotagesFixed": 223,
+ "StatsImpostorKills": 224,
+ "StatsTimesMurdered": 225,
+ "StatsTimesEjected": 226,
+ "StatsCrewmateStreak": 227,
+ "StatsGamesImpostor": 228,
+ "StatsGamesCrewmate": 229,
+ "StatsGamesStarted": 230,
+ "StatsGamesFinished": 231,
+ "StatsImpostorVoteWins": 232,
+ "StatsImpostorKillsWins": 233,
+ "StatsImpostorSabotageWins": 234,
+ "StatsCrewmateVoteWins": 235,
+ "StatsCrewmateTaskWins": 236,
+ "MedscanRequested": 237,
+ "MedscanWaitingFor": 238,
+ "MedscanCompleted": 239,
+ "MedscanCompleteIn": 240,
+ "MonitorOxygen": 241,
+ "StoreArtifacts": 242,
+ "FillCanisters": 243,
+ "FixWeatherNode": 244,
+ "InsertKeys": 245,
+ "ResetSeismic": 246,
+ "SeismicHoldToStop": 247,
+ "SeismicNominal": 248,
+ "ScanBoardingPass": 249,
+ "OpenWaterways": 250,
+ "ReplaceWaterJug": 251,
+ "RepairDrill": 252,
+ "AlignTelescope": 253,
+ "RecordTemperature": 254,
+ "RebootWifi": 255,
+ "WifiRebootRequired": 256,
+ "WifiPleasePowerOn": 257,
+ "WifiPleaseWait": 258,
+ "WifiPleaseReturnIn": 259,
+ "WifiRebootComplete": 260,
+ "Outside": 261,
+ "GameSecondsAbbrev": 262,
+ "Engines": 263,
+ "Dropship": 264,
+ "Decontamination2": 265,
+ "Specimens": 266,
+ "BoilerRoom": 267,
+ "GameOverImpostorDead": 268,
+ "GameOverImpostorKills": 269,
+ "GameOverTaskWin": 270,
+ "GameOverSabotage": 271,
+ "GameConfirmImpostor": 272,
+ "GameVisualTasks": 273,
+ "ExileTextNonConfirm": 274,
+ "GameAnonymousVotes": 275,
+ "GameTaskBarMode": 276,
+ "SettingNormalTaskMode": 277,
+ "SettingMeetingTaskMode": 278,
+ "SettingInvisibleTaskMode": 279,
+ "PlainYes": 280,
+ "PlainNo": 281,
+ "PrivacyPolicyTitle": 282,
+ "PrivacyPolicyText": 283,
+ "ManageDataButton": 284,
+ "UnderstandButton": 285,
+ "HowToPlayText2Switch": 286,
+ "ChatRateLimit": 287,
+ "TotalTasksCompleted": 288,
+ "ServerNA": 289,
+ "ServerEU": 290,
+ "ServerAS": 291,
+ "ServerSA": 292,
+ "LangEnglish": 293,
+ "LangFrench": 294,
+ "LangItalian": 295,
+ "LangGerman": 296,
+ "LangSpanish": 297,
+ "LangSpanishLATAM": 298,
+ "LangBrazPort": 299,
+ "LangPort": 300,
+ "LangRussian": 301,
+ "LangJapanese": 302,
+ "LangKorean": 303,
+ "LangDutch": 304,
+ "LangFilipino": 305,
+ "PlayerName": 306,
+ "MyTablet": 307,
+ "Download": 308,
+ "DownloadComplete": 309,
+ "DownloadTestEstTimeS": 310,
+ "DownloadTestEstTimeMS": 311,
+ "DownloadTestEstTimeHMS": 312,
+ "DownloadTestEstTimeDHMS": 313,
+ "Upload": 314,
+ "Headquarters": 315,
+ "GrabCoffee": 316,
+ "TakeBreak": 317,
+ "DontNeedWait": 318,
+ "DoSomethingElse": 319,
+ "NodeTB": 320,
+ "NodeIRO": 321,
+ "NodeGI": 322,
+ "NodePD": 323,
+ "NodeCA": 324,
+ "NodeMLG": 325,
+ "Vending": 326,
+ "OtherLanguage": 327,
+ "ImposterAmtAny": 328,
+ "VitalsORGN": 329,
+ "VitalsBLUE": 330,
+ "VitalsRED": 331,
+ "VitalsBRWN": 332,
+ "VitalsGRN": 333,
+ "VitalsPINK": 334,
+ "VitalsWHTE": 335,
+ "VitalsYLOW": 336,
+ "VitalsBLAK": 337,
+ "VitalsPURP": 338,
+ "VitalsCYAN": 339,
+ "VitalsLIME": 340,
+ "VitalsOK": 341,
+ "VitalsDEAD": 342,
+ "VitalsDC": 343,
+ "ColorOrange": 344,
+ "ColorBlue": 345,
+ "ColorRed": 346,
+ "ColorBrown": 347,
+ "ColorGreen": 348,
+ "ColorPink": 349,
+ "ColorWhite": 350,
+ "ColorYellow": 351,
+ "ColorBlack": 352,
+ "ColorPurple": 353,
+ "ColorCyan": 354,
+ "ColorLime": 355,
+ "MedID": 356,
+ "MedC": 357,
+ "MedHT": 358,
+ "MedBT": 359,
+ "MedWT": 360,
+ "MedETA": 361,
+ "MedHello": 362,
+ "PetFailFetchData": 363,
+ "BadResult": 364,
+ "More": 365,
+ "Processing": 366,
+ "ExitGame": 367,
+ "WaitingForHost": 368,
+ "LeftGameError": 369,
+ "PlayerWasBannedBy": 370,
+ "PlayerWasKickedBy": 371,
+ "CamEast": 372,
+ "CamCentral": 373,
+ "CamNortheast": 374,
+ "CamSouth": 375,
+ "CamSouthwest": 376,
+ "CamNorthwest": 377,
+ "LoadingFailed": 378,
+ "LobbySizeWarning": 379,
+ "Okay": 380,
+ "OkayDontShow": 381,
+ "Nevermind": 382,
+ "Dummy": 383,
+ "Bad": 384,
+ "Status": 385,
+ "Fine": 386,
+ "OK": 387,
+ "PetTryOn": 388,
+ "SecondsAbbv": 389,
+ "SecurityLogsSystem": 390,
+ "SecurityCamsSystem": 391,
+ "AdminMapSystem": 392,
+ "VitalsSystem": 393,
+ "BanButton": 394,
+ "KickButton": 395,
+ "ReportButton": 396,
+ "ReportConfirmation": 397,
+ "ReportBadName": 398,
+ "ReportBadChat": 399,
+ "ReportHacking": 400,
+ "ReportHarassment": 401,
+ "ReportWhy": 402,
+ "Visor": 403,
+ "NamePlate": 404,
+ "Visors": 405,
+ "NamePlates": 406,
+ "Cosmicube": 407,
+ "Cosmicubes": 408,
+ "Activate": 409,
+ "Deactivate": 410,
+ "Owned": 411,
+ "Purchase": 412,
+ "CosmicubeProgression": 413,
+ "ViewCube": 414,
+ "ConfirmPurchaseHeader": 415,
+ "ConfirmPurchaseText": 416,
+ "DeactivateCube": 417,
+ "ActivateCube": 418,
+ "Bundles": 419,
+ "Stars": 420,
+ "PurchasingLabel": 421,
+ "MouseMovement": 422,
+ "KeyboardOptions": 423,
+ "RemapBindings": 424,
+ "KeyboardBindingsHeader": 425,
+ "ExitButton": 426,
+ "PolishRuby": 500,
+ "ResetBreakers": 501,
+ "Decontaminate": 502,
+ "MakeBurger": 503,
+ "UnlockSafe": 504,
+ "SortRecords": 505,
+ "PutAwayPistols": 506,
+ "FixShower": 507,
+ "CleanToilet": 508,
+ "DressMannequin": 509,
+ "PickUpTowels": 510,
+ "RewindTapes": 511,
+ "StartFans": 512,
+ "DevelopPhotos": 513,
+ "GetBiggolSword": 514,
+ "PutAwayRifles": 515,
+ "StopCharles": 516,
+ "AuthLeftOkay": 517,
+ "AuthRightOkay": 518,
+ "AuthLeftActive": 519,
+ "AuthRightActive": 520,
+ "AuthLeftNotActive": 521,
+ "AuthRightNotActive": 522,
+ "LobbyTimerExpiringTitle": 523,
+ "LobbyTimerExpiringMsg": 524,
+ "LobbyTimerExpiringOk": 525,
+ "LobbyTimerExpiringNo": 526,
+ "LobbyTimerExpiringUnit": 527,
+ "LobbyTimerExpiringMsg2": 528,
+ "LobbyTimerExpiringHud": 529,
+ "VaultRoom": 550,
+ "Cockpit": 551,
+ "Armory": 552,
+ "Kitchen": 553,
+ "ViewingDeck": 554,
+ "HallOfPortraits": 555,
+ "Medical": 556,
+ "CargoBay": 557,
+ "Ventilation": 558,
+ "Showers": 559,
+ "Engine": 560,
+ "Brig": 561,
+ "MeetingRoom": 562,
+ "Records": 563,
+ "Lounge": 564,
+ "GapRoom": 565,
+ "MainHall": 566,
+ "RevealCode": 567,
+ "DirtyHeader": 568,
+ "ErrorServerOverload": 700,
+ "ErrorIntentionalLeaving": 701,
+ "ErrorFocusLost": 702,
+ "ErrorBanned": 703,
+ "ErrorKicked": 704,
+ "ErrorBannedNoCode": 705,
+ "ErrorKickedNoCode": 706,
+ "ErrorHacking": 707,
+ "ErrorFullGame": 708,
+ "ErrorStartedGame": 709,
+ "ErrorNotFoundGame": 710,
+ "ErrorInactivity": 711,
+ "ErrorGenericOnlineDisconnect": 712,
+ "ErrorGenericLocalDisconnect": 713,
+ "ErrorInvalidName": 714,
+ "ErrorUnknown": 715,
+ "ErrorIncorrectVersion": 716,
+ "ErrorNotAuthenticated": 717,
+ "ErrorInternalServer": 718,
+ "ErrorPlatformLock": 719,
+ "ErrorLobbyInactivity": 720,
+ "ErrorMatchmakerInactivity": 721,
+ "ErrorInvalidGameOptions": 722,
+ "ErrorNoServersAvailable": 723,
+ "ErrorQuickmatchDisabled": 724,
+ "ErrorTooManyGames": 725,
+ "ErrorDuplicateConnection": 726,
+ "ErrorTooManyRequests": 727,
+ "ErrorSanction": 728,
+ "ErrorClientTimeout": 729,
+ "ErrorClientTimeoutConsole": 730,
+ "VentDirection": 1000,
+ "VentMove": 1001,
+ "MenuNavigate": 1002,
+ "NoTranslation": 1003,
+ "NsoError": 1004,
+ "Roles": 1499,
+ "RolesSettings": 1500,
+ "ScientistRole": 1501,
+ "EngineerRole": 1502,
+ "GuardianAngelRole": 1503,
+ "ShapeshifterRole": 1504,
+ "ScientistBlurb": 1505,
+ "EngineerBlurb": 1506,
+ "GuardianAngelBlurb": 1507,
+ "ShapeshifterBlurb": 1508,
+ "CrewmateBlurb": 1509,
+ "ImpostorBlurb": 1510,
+ "YourRoleIs": 1511,
+ "ShapeshiftAbility": 1512,
+ "VentAbility": 1513,
+ "VitalsAbility": 1514,
+ "ProtectAbility": 1515,
+ "ShapeshiftAbilityUndo": 1516,
+ "RoleChanceAndQuantity": 1517,
+ "ProtectedRecently": 1518,
+ "ShapeshifterDuration": 1519,
+ "ShapeshifterCooldown": 1520,
+ "ShapeshifterLeaveSkin": 1521,
+ "ScientistCooldown": 1522,
+ "GuardianAngelCooldown": 1523,
+ "EngineerCooldown": 1524,
+ "ScientistBlurbMed": 1525,
+ "ScientistBlurbLong": 1526,
+ "EngineerBlurbMed": 1527,
+ "EngineerBlurbLong": 1528,
+ "GuardianAngelBlurbMed": 1529,
+ "GuardianAngelBlurbLong": 1530,
+ "ShapeshifterBlurbMed": 1531,
+ "ShapeshifterBlurbLong": 1532,
+ "RoleHint": 1533,
+ "EngineerInVentCooldown": 1534,
+ "ScientistBatteryCharge": 1535,
+ "GuardianAngelDuration": 1536,
+ "GuardianAngelImpostorSeeProtect": 1537,
+ "StatsRoleWins": 1538,
+ "StatsEngineerVents": 1539,
+ "StatsScientistChargesGained": 1540,
+ "StatsGuardianAngelCrewmatesProtected": 1541,
+ "StatsShapeshifterShiftedKills": 1542,
+ "CrewmateGhostRole": 1543,
+ "ImpostorGhostRole": 1544,
+ "HauntAbilityName": 1545,
+ "SeekButton": 1546,
+ "RolesHelp_CrewmateRole": 1547,
+ "RolesHelp_ImpostorRole": 1548,
+ "RolesHelpIntro_01": 1549,
+ "RolesHelpIntro_02": 1550,
+ "RolesHelp_Scientist_01": 1560,
+ "RolesHelp_Scientist_02": 1561,
+ "RolesHelp_Engineer_01": 1562,
+ "RolesHelp_Engineer_02": 1563,
+ "RolesHelp_GuardianAngel_01": 1564,
+ "RolesHelp_GuardianAngel_02": 1565,
+ "RolesHelp_Shapeshifter_01": 1600,
+ "RolesHelp_Shapeshifter_02": 1601,
+ "RolesHelpOutro_01": 1650,
+ "RolesHelpOutro_02": 1651,
+ "SanctionDuration": 1700,
+ "SanctionPermanent": 1701,
+ "SanctionConduct": 1702,
+ "SanctionImpersonationCeleb": 1703,
+ "SanctionSpamming": 1704,
+ "SanctionInappropriateNameUnsportsmanlike": 1705,
+ "SanctionUnsportsmanlikeConduct": 1706,
+ "SanctionImpersonationDevelopers": 1707,
+ "SanctionInappropriateChatPersonalInfo": 1708,
+ "SanctionInappropriateNameDerogatory": 1709,
+ "SanctionInappropriateNameNsfw": 1710,
+ "SanctionBullying": 1711,
+ "SanctionCheatingHacking": 1712,
+ "SanctionInappropriateChatDating": 1713,
+ "SanctionWeaponizingRules": 1714,
+ "SanctionRepeatOffender3": 1715,
+ "SanctionSexualMisconduct": 1716,
+ "SanctionDoxing": 1717,
+ "SanctionIllegalActivity": 1718,
+ "SanctionHarassment": 1719,
+ "SanctionSelfHarmPromotion": 1720,
+ "SanctionRepeatOffender10": 1721,
+ "SanctionUnknown": 1722,
+ "ScreenShakeOption": 1900,
+ "FeaturedItems": 1901,
+ "FeaturedBundles": 1902,
+ "FeaturedCubes": 1903,
+ "BugReportPopUpAttachScreenshotDesc": 1904,
+ "UserIdTokenError": 1905,
+ "NewGameMode": 1906,
+ "NewModeInfo": 1907,
+ "HideSeekHowToPlayTitleOne": 1908,
+ "HideSeekHowToPlayCaptionOne": 1909,
+ "HideSeekHowToPlayCaptionTwo": 1910,
+ "HideSeekHowToPlayCaptionThree": 1911,
+ "HideSeekHowToPlayPageOne": 1912,
+ "HideSeekHowToPlayImpostorOne": 1913,
+ "HideSeekHowToPlaySubtextOne": 1914,
+ "HideSeekHowToPlayCrewmateInfoOne": 1915,
+ "HideSeekHowToPlayCrewmateInfoTwo": 1916,
+ "HideSeekHowToPlayImpostorInfoOne": 1917,
+ "HideSeekHowToPlayFlashlightDefault": 1918,
+ "HideSeekHowToPlayFinalHide": 1919,
+ "HideSeekHowToPlayFlashlightMobile": 1920,
+ "HideSeekHowToPlayFlashlightSwitch": 1921,
+ "HideSeekHowToPlayFlashlightConsoles": 1922,
+ "HideSeekHowToPlayFlashlightPlayStation": 1923,
+ "QCInputSelf": 1925,
+ "QCInputFavorite": 1926,
+ "QCCrewMyself": 1950,
+ "QCTagSelf": 1951,
+ "QCTagFavorites": 1952,
+ "QCBuilderHeader": 1953,
+ "QCRemarks": 1954,
+ "QCCrewDead": 1955,
+ "QCSelfVoted": 1956,
+ "QCSelfReportedBody": 1957,
+ "QCSelfCams": 1958,
+ "QCCrewReportedBody": 1959,
+ "QCCrewCams": 1960,
+ "QCSelfWasProtected": 1961,
+ "QCCrewWasProtected": 1962,
+ "QCSelfWasntMe": 1963,
+ "QCWhoWasAt": 1964,
+ "QCSelfDoingTask": 1965,
+ "QCWhoIsRole": 1966,
+ "QCSelfFixedSystem": 1967,
+ "QCCrewFixedSystem": 1968,
+ "QCSelfAccAtLocation": 1969,
+ "QCSelfDidTaskAtLocation": 1970,
+ "QCCrewDidTaskAtLocation": 1971,
+ "QCSelfSawCrewVentAtLocation": 1972,
+ "QCSelfDidntVent": 1973,
+ "QCFollowMe": 1974,
+ "QCItsNotMe": 1975,
+ "QCSelfDoneWithTasks": 1976,
+ "QCGhostsDoYourTasks": 1977,
+ "QCSelfNotTheImpostor": 1978,
+ "QCHello": 1979,
+ "QCThanks": 1980,
+ "QCSorry": 1981,
+ "QCGG": 1982,
+ "QCBye": 1983,
+ "QCWhereWasTheBody": 1984,
+ "QCSelfReady": 1985,
+ "QCSelfWasRole": 1986,
+ "QCWhoWasRole": 1987,
+ "QCCoolOutfitCrew": 1988,
+ "QCSelfWasUsingBinoculars": 1989,
+ "QCSelfSawThroughBinoculars": 1990,
+ "QCInTheSporeCloud": 1991,
+ "QCHiddenBySporeCloud": 1992,
+ "CQCrewKilledDeadInSporeCloud": 1993,
+ "QCSelfUsingZipline": 1994,
+ "QCSelfSawWhileUsingZipline": 1995,
+ "QCCrewWasUsingZipline": 1996,
+ "QCDuringMushroomMixup": 1997,
+ "QCLocationLaptop": 2000,
+ "QCSystemsStart": 2004,
+ "QCSystemsKick": 2005,
+ "QCCrewI": 2006,
+ "QCCrewMe": 2007,
+ "QCCrewNoOne": 2008,
+ "QCAccAKilledB": 2009,
+ "QCAccAKilledBNeg": 2010,
+ "QCAccAIsSuspicious": 2011,
+ "QCAccAIsSuspiciousNeg": 2012,
+ "QCAccASawBVent": 2013,
+ "QCAccASawBVentNeg": 2014,
+ "QCAccAWasChasingB": 2015,
+ "QCAccAWasChasingBNeg": 2016,
+ "QCAccAIsLying": 2017,
+ "QCAccAIsLyingNeg": 2018,
+ "QCAccVoteA": 2019,
+ "QCAccVoteANeg": 2020,
+ "QCAccADidntReport": 2021,
+ "QCResYes": 2022,
+ "QCResNo": 2023,
+ "QCResDontKnow": 2024,
+ "QCResDontKnowNeg": 2025,
+ "QCResAWas": 2026,
+ "QCResAWasNeg": 2027,
+ "QCResADid": 2028,
+ "QCResADidNeg": 2029,
+ "QCResVote": 2030,
+ "QCResVoteNeg": 2031,
+ "QCResAWasAtB": 2032,
+ "QCResAWasAtBNeg": 2033,
+ "QCResRip": 2034,
+ "QCResRipNeg": 2035,
+ "QCResLies": 2036,
+ "QCResLiesNeg": 2037,
+ "QCQstWhere": 2038,
+ "QCQstWho": 2039,
+ "QCQstWhoWasWith": 2040,
+ "QCQstWhatWasADoing": 2041,
+ "QCQstWhoDidTask": 2042,
+ "QCQstWhereWasA": 2043,
+ "QCQstBodyOrMeeting": 2044,
+ "QCStaASawB": 2045,
+ "QCStaAWasWithB": 2046,
+ "QCStaADidB": 2047,
+ "QCStaASelfReported": 2048,
+ "QCStaDoubleKill": 2049,
+ "QCStaWasSelfReport": 2050,
+ "QCStaPleaseDoTasks": 2051,
+ "QCStaBodyWasInA": 2052,
+ "QCStaACalledMeeting": 2053,
+ "QCLocation": 2054,
+ "QCSystems": 2055,
+ "QCCrew": 2056,
+ "QCAccusation": 2057,
+ "QCResponse": 2058,
+ "QCQuestion": 2059,
+ "QCStatements": 2060,
+ "ANY": 2061,
+ "ChatType": 2062,
+ "QuickChatOnly": 2063,
+ "FreeChatOnly": 2064,
+ "FreeOrQuickChat": 2065,
+ "DateOfBirth": 2066,
+ "DateOfBirthEnter": 2067,
+ "Month": 2068,
+ "Day": 2069,
+ "Year": 2070,
+ "January": 2071,
+ "February": 2072,
+ "March": 2073,
+ "April": 2074,
+ "May": 2075,
+ "June": 2076,
+ "July": 2077,
+ "August": 2078,
+ "September": 2079,
+ "October": 2080,
+ "November": 2081,
+ "December": 2082,
+ "Submit": 2083,
+ "QCMore": 2084,
+ "Success": 2085,
+ "Failed": 2086,
+ "ErrorCreate": 2087,
+ "SuccessCreate": 2088,
+ "Close": 2089,
+ "ErrorLogIn": 2090,
+ "SuccessLogIn": 2091,
+ "AccountInfo": 2092,
+ "Account": 2093,
+ "UserName": 2094,
+ "Height": 2095,
+ "Weight": 2096,
+ "SignIn": 2097,
+ "CreateAccount": 2098,
+ "RequestPermission": 2099,
+ "RandomizeName": 2100,
+ "AccountLinking": 2101,
+ "ChangeName": 2102,
+ "LogOut": 2103,
+ "GuardianWait": 2104,
+ "EmailEdit": 2105,
+ "EmailResend": 2106,
+ "GuestContinue": 2107,
+ "GuardianEmailSent": 2108,
+ "GuardianCheckEmail": 2109,
+ "EditName": 2110,
+ "Name": 2111,
+ "CreateAccountQuestion": 2112,
+ "DoYouWantCreate": 2113,
+ "PermissionRequired": 2114,
+ "NeedPermissionText": 2115,
+ "GuardianEmailTitle": 2116,
+ "Send": 2117,
+ "NewEmail": 2118,
+ "ConfirmEmail": 2119,
+ "EditEmail": 2120,
+ "Loading": 2121,
+ "Welcome": 2122,
+ "DLLNotFoundAccountError": 2123,
+ "ContinueOffline": 2124,
+ "CreateTryAgain": 2125,
+ "WantToLogIn": 2126,
+ "GoOffline": 2127,
+ "PlayAsGuest": 2128,
+ "LogInTitle": 2129,
+ "LogInInfoText": 2130,
+ "ShowAccountSupportID5": 2131,
+ "ShowAccountSupportID4": 2132,
+ "ShowAccountSupportID3": 2133,
+ "ShowAccountSupportID2": 2134,
+ "ShowAccountSupportID1": 2135,
+ "YouAreNotOnline": 2136,
+ "SaveGameOutOfSpaceMessage": 2137,
+ "SaveGameOutOfSpaceConfirm": 2138,
+ "SaveGameOutOfSpaceCancel": 2139,
+ "EngagementScreen": 2140,
+ "EngagementScreenSignIn": 2141,
+ "FollowUs": 2142,
+ "ColorMaroon": 2143,
+ "ColorRose": 2144,
+ "ColorBanana": 2145,
+ "ColorGray": 2146,
+ "ColorTan": 2147,
+ "ColorSunset": 2148,
+ "QuickChatInstructionsStart": 2149,
+ "QuickChatInstructionsChild": 2150,
+ "QuickChatInstructionsGuest": 2151,
+ "QuickChatInstructionsFull": 2152,
+ "SwitchEShopBrowseAll": 2153,
+ "ColorCoral": 2154,
+ "GuardianEmail": 2155,
+ "LocalButton": 2156,
+ "OnlineButton": 2157,
+ "HowToPlayButton": 2158,
+ "FreePlayButton": 2159,
+ "PublicHeader": 2160,
+ "PrivateHeader": 2161,
+ "HostHeader": 2162,
+ "EmergencyMeeting": 2163,
+ "BodyReported": 2164,
+ "PlayAgain": 2165,
+ "QuitLabel": 2166,
+ "DownloadLabel": 2167,
+ "UploadLabel": 2168,
+ "TimeRemaining": 2169,
+ "AnnouncementLabel": 2170,
+ "StartLabel": 2171,
+ "UseLabel": 2172,
+ "KillLabel": 2173,
+ "SabotageLabel": 2174,
+ "VentLabel": 2175,
+ "OptionsLabel": 2176,
+ "ReportLabel": 2177,
+ "CO2Label": 2178,
+ "NutriLabel": 2179,
+ "RADLabel": 2180,
+ "WaterLabel": 2181,
+ "DiscussLabel": 2182,
+ "DeadLabel": 2183,
+ "SkippedVoting": 2184,
+ "ProceedLabel": 2185,
+ "HolidayHatLabel": 2186,
+ "HatLabel": 2187,
+ "PetLabel": 2188,
+ "SkinLabel": 2189,
+ "DoorlogLabel": 2190,
+ "VitalsLabel": 2191,
+ "InsufficientStorageError": 2192,
+ "NetworkError": 2193,
+ "OtherDownloadError": 2194,
+ "DownloadingLabel": 2195,
+ "DownloadSizeLabel": 2196,
+ "SkipVoteLabel": 2197,
+ "LogInInfoTextSwitch": 2198,
+ "WeatherDataDownload": 2199,
+ "BeginLabel": 2200,
+ "QuietLabel": 2201,
+ "LogLabel": 2202,
+ "ReadingLabel": 2203,
+ "UploadingLabel": 2204,
+ "ConnectionLabel": 2205,
+ "GoodLabel": 2206,
+ "PoorLabel": 2207,
+ "NoneLabel": 2208,
+ "ProgressLabel": 2209,
+ "PerfectLabel": 2210,
+ "NoDeadBodiesFound": 2211,
+ "AirshipBundle": 2212,
+ "PolusBundle": 2213,
+ "PolusSkinBundle": 2214,
+ "MiraBundle": 2215,
+ "MiraSkinBundle": 2216,
+ "PetAlien2": 2217,
+ "PetAlien1": 2218,
+ "PetAnimal": 2219,
+ "PetCrewmate": 2220,
+ "PetStickmin": 2221,
+ "PrisonerSkin": 2222,
+ "Cyborg_RHM": 2223,
+ "CCC_Officer": 2224,
+ "VentCleaning": 2225,
+ "CleanUp": 2226,
+ "ControllerDisconnectedMessage": 2227,
+ "TermsOfUseTitle": 2228,
+ "PPAndToUTitle": 2229,
+ "ComePlayDiscord": 2230,
+ "SupportEmail": 2231,
+ "SupportIDLabel": 2232,
+ "pk05_davehat": 2233,
+ "pk05_Ellie": 2234,
+ "pk05_Svenhat": 2235,
+ "pk05_Burthat": 2236,
+ "pk05_Ellryhat": 2237,
+ "pk05_monocles": 2238,
+ "pk05_cheesetoppat": 2239,
+ "pk05_Macbethhat": 2240,
+ "pk05_HenryToppat": 2241,
+ "pk05_EllieToppat": 2242,
+ "pk05_GeoffreyToppat": 2243,
+ "InviteFriends": 2244,
+ "Continue": 2245,
+ "GameComplete": 2246,
+ "XpGained": 2247,
+ "PodsEarned": 2248,
+ "CosmicubeNodeUnlocked": 2249,
+ "LevelShorthand": 2250,
+ "PrestigeLevelShorthand": 2251,
+ "MaxLevel": 2252,
+ "EquipLabel": 2253,
+ "XpGainedValue": 2254,
+ "PSNErrorSessionFailed": 2255,
+ "PSNErrorSessionJoinFailed": 2256,
+ "PSNErrorSessionGetInfoFailed": 2257,
+ "PSNErrorPSNConnectionLost": 2258,
+ "PSNErrorUserSignedOut": 2259,
+ "CrossPlayTitle": 2260,
+ "CrossPlayAllPlatforms": 2261,
+ "CrossPlaySamePlatform": 2262,
+ "QuickChat": 2263,
+ "TimeOutText": 2264,
+ "RetryText": 2265,
+ "PlayerLevel": 2266,
+ "PlayerXp": 2267,
+ "PlayerLevelExtremeShorthand": 2268,
+ "Max": 2269,
+ "Wardrobe": 2270,
+ "CopiedText": 2271,
+ "LinkAccount": 2272,
+ "CreateNewAccount": 2273,
+ "LinkExistingAccount": 2274,
+ "LinkAccountExplanation": 2275,
+ "LinkAccountCode": 2276,
+ "ErrorLink": 2277,
+ "UnlinkAccount": 2278,
+ "ConfirmUnlinkAccount": 2279,
+ "UnlinkAccountExplain": 2280,
+ "UnlinkAccountExplainConfirm": 2281,
+ "UnlinkError": 2282,
+ "UnlinkSuccess": 2283,
+ "ConfirmLinkExistingAccount": 2284,
+ "LinkExistingAccountExplain": 2285,
+ "LinkExistingAccountExplainConfirm": 2286,
+ "ResetAccount": 2287,
+ "CrossPlayEnabledWarning": 2288,
+ "StoreComingSoon": 2289,
+ "Locked": 2290,
+ "FailPurchase": 2291,
+ "FailPurchaseUnknown": 2292,
+ "FailPurchaseAlreadyOwn": 2293,
+ "FailPurchaseCurrency": 2294,
+ "FailPurchaseCubeOwn": 2295,
+ "ErrorPlatformParentalControlsBlock": 2296,
+ "Crewmates": 2297,
+ "Colors": 2298,
+ "Active": 2299,
+ "Equipped": 2300,
+ "XboxShopBrowseAll": 2302,
+ "PSShopBrowseAll": 2303,
+ "SteamNotInitialized": 2304,
+ "LoggedInErrorStarPurchase": 2305,
+ "StarDisclaimer": 2306,
+ "HowToPlayText_Consoles": 2307,
+ "ErrorQuickChatMode": 2308,
+ "ErrorLobbyUsersBlocked": 2309,
+ "ItchNoStars": 2310,
+ "CheckingPurchasesLabel": 2311,
+ "RedeemPurchasedItemsTitle": 2312,
+ "RedeemPurcahsedItemsExplain": 2313,
+ "RedeemProceed": 2314,
+ "RedeemNotYet": 2315,
+ "AccountIDDisplay": 2316,
+ "RedeemNever": 2317,
+ "AvailableFor": 2318,
+ "GuestProgressionWarning": 2319,
+ "ErrorSelfPlatformLock": 2320,
+ "ErrorCrossPlat": 2321,
+ "SettingsStreamerMode": 2322,
+ "RoomCodeInfo": 2323,
+ "AbbreviatedDay": 2324,
+ "AbbreviatedHour": 2325,
+ "AbbreviatedMinute": 2326,
+ "AbbreviatedSecond": 2327,
+ "StreamingTwitch": 2328,
+ "MapNameSkeld": 2600,
+ "MapNameMira": 2601,
+ "MapNamePolus": 2602,
+ "MapNameAirship": 2603,
+ "MapNameFungle": 2604,
+ "MaxVentUses": 2700,
+ "MaxTimeInVent": 2701,
+ "MinCrewmatesForVitals": 2702,
+ "EscapeTime": 2703,
+ "AllTasksComplete": 2704,
+ "EscapePrompt": 2705,
+ "CrewmateFlashlightSize": 2706,
+ "ImpostorFlashlightSize": 2707,
+ "CrewmateLeadTime": 2708,
+ "CrewmadeHideBlurb": 2709,
+ "ImpostorKillBlurb": 2710,
+ "HideCountdown": 2711,
+ "ScaryMusicDistance": 2712,
+ "ShortTaskTimeValue": 2713,
+ "LongTaskTimeValue": 2714,
+ "CommonTaskTimeValue": 2715,
+ "UseFlashlight": 2716,
+ "FinalEscapeTime": 2717,
+ "VeryScaryMusicDistance": 2718,
+ "SeekerFinalSpeed": 2719,
+ "SeekerFinalVents": 2720,
+ "SeekerFinalMap": 2721,
+ "CrewmateVentCooldown": 2722,
+ "SeekerPings": 2723,
+ "MaxPingTime": 2724,
+ "ShowPingTime": 2725,
+ "MinPingTime": 2726,
+ "ShowCrewmateNames": 2727,
+ "ShowImpostorNames": 2728,
+ "HideActionButton": 2729,
+ "RuleOneCrewmates": 2730,
+ "RuleTwoCrewmates": 2731,
+ "RuleThreeCrewmates": 2732,
+ "RuleOneImpostor": 2733,
+ "RuleTwoImpostor": 2734,
+ "RuleThreeImpostor": 2735,
+ "RuleOneCrewmatesTitle": 2736,
+ "RuleTwoCrewmatesTitle": 2737,
+ "RuleThreeCrewmatesTitle": 2738,
+ "RuleOneImpostorTitle": 2739,
+ "RuleTwoImpostorTitle": 2740,
+ "RoundRobin": 2741,
+ "OptionUnavailablePublicLobby": 2742,
+ "StatsHidenSeekGamesCrewmateSurvived": 2743,
+ "StatsHidenSeekTimesVented": 2744,
+ "StatsTimesPettedPet": 2745,
+ "StatsImpostorKills_HideAndSeek": 2746,
+ "StatsFastestCrewmateWin_HideAndSeek": 2747,
+ "StatsFastestImpostorWin_HideAndSeek": 2748,
+ "StatsHideAndSeekImpostorVictory": 2749,
+ "StatsHideAndSeekCrewmateVictory": 2750,
+ "AmongUsFriends": 2800,
+ "FriendsGuestWarning": 2801,
+ "PlatformFriends": 2802,
+ "BlockedPlayers": 2803,
+ "RecentPlayers": 2804,
+ "LobbyLabel": 2805,
+ "FriendCodeExplanation": 2806,
+ "FriendCodeSuccess": 2807,
+ "FriendRequestReceived": 2808,
+ "FriendRequestSent": 2809,
+ "GameLobbyInviteSent": 2810,
+ "GameLobbyInviteReceived": 2811,
+ "BlockPlayerConfirm": 2812,
+ "RemoveFriendConfirm": 2813,
+ "InviteToLobbyConfirm": 2814,
+ "FriendCodeLabel": 2815,
+ "FriendCodeCreationTitle": 2816,
+ "FriendRequestSentFailed": 2817,
+ "ErrorBadUsername": 2818,
+ "ErrorUserNotFound": 2819,
+ "ErrorThisIsYou": 2820,
+ "ErrorFriendRequestExists": 2821,
+ "ErrorAlreadyFriends": 2822,
+ "GameLobbyInviteSentFailed": 2823,
+ "BlockedPlayerFailed": 2824,
+ "BlockedPlayer": 2825,
+ "AlreadyBlocked": 2826,
+ "FriendList": 2827,
+ "NoNewRequests": 2828,
+ "AddFriendPrompt": 2829,
+ "NewRequests": 2830,
+ "Requests": 2831,
+ "AddFriend": 2832,
+ "StreamWarning": 2833,
+ "FriendsListPermissionsWarning": 2834,
+ "AddFriendConfirm": 2835,
+ "UnfriendConfirm": 2836,
+ "UnblockConfirm": 2837,
+ "SettingsEnableFriendInvites": 2838,
+ "ErrorCrossPlatformCommunication": 2839,
+ "ErrorPlatformFriends": 2840,
+ "ErrorPlayerBlockedYou": 2841,
+ "ErrorRecipientMaxFriendRequests": 2842,
+ "ErrorSenderMaxFriendRequests": 2843,
+ "ErrorMaxFriends": 2844,
+ "ErrorRecipientMaxFriends": 2845,
+ "ParentPortalButton": 2846,
+ "FriendsListEmailSent": 2847,
+ "AndroidAssetBundleWarning": 2848,
+ "FreeChatLinkWarning": 2849,
+ "FriendListUnavailable": 2850,
+ "SignInIssueTitle": 2851,
+ "SignInIssueText": 2852,
+ "Ghost": 2853,
+ "CurrentlyHaunting": 2854,
+ "RestorePurchases": 2855,
+ "QCAccIsRole": 3000,
+ "QCAccIsRoleNeg": 3001,
+ "QCAccShapeshited": 3002,
+ "QCStaShapeshifterSkin": 3003,
+ "QCResIsBeingFramed": 3004,
+ "QCResIsRoleMaybe": 3005,
+ "QCResCloseTo": 3006,
+ "QCResProtected": 3007,
+ "QCRoles": 3008,
+ "ErrorFailedToCreateGame": 3009,
+ "ErrorFailedToJoinCreatedGame": 3010,
+ "ErrorDisconnectBeforeJoining": 3011,
+ "ErrorDisconnectPacket": 3012,
+ "PSEULA_SIEA": 3013,
+ "PSEULA_SIEE": 3014,
+ "ShowAccountID": 3015,
+ "HideAccountID": 3016,
+ "HiddenAccountID": 3017,
+ "ErrorLobbyFailedGettingBlockedUsers": 3018,
+ "SteamOverlayDisabled": 3019,
+ "QCOnlyInfo": 3020,
+ "FreeChatInfo": 3021,
+ "FreeChatWarning": 3022,
+ "TryAgain": 3023,
+ "TempDisabled": 3024,
+ "TempDisabledLinkExplain": 3025,
+ "RedeemPopup": 3026,
+ "RedeemButton": 3027,
+ "Decontamination3": 3028,
+ "MergeGuestAccountText": 3029,
+ "MergeGuestAccountTitle": 3030,
+ "ErrorCommunications": 3031,
+ "ManageAccountTitle": 3032,
+ "ManageAccountText": 3033,
+ "Email": 3034,
+ "BugReportPopUpSubmittedText": 3035,
+ "BugReportPopUpCategoryLabel": 3036,
+ "BugReportPopUpDescriptionLabel": 3037,
+ "BugReportPopUpTitle": 3038,
+ "BugReportCategoryServerIssues": 3039,
+ "BugReportCategoryGameplayIssue": 3040,
+ "BugReportCategoryAccountManagement": 3041,
+ "BugReportCategoryBilling": 3042,
+ "BugReportCategoryGeneral": 3043,
+ "BugReportIssueButton": 3044,
+ "BugReportPopUpSubmissionFailedText": 3045,
+ "BugReportPopUpAttachScreenshotLabel": 3046,
+ "QCQstWhy": 3050,
+ "QCTagAccuse": 3051,
+ "QCTagDefend": 3052,
+ "QCTagQuestion": 3053,
+ "QCTagLobby": 3054,
+ "QCTagImpostor": 3055,
+ "QCTagMeeting": 3056,
+ "QCTagHiding": 3057,
+ "QCTagFlashlight": 3058,
+ "QCTagRoles": 3059,
+ "QCInputRole": 3060,
+ "QCTagTasks": 3061,
+ "QCInputTask": 3062,
+ "QCTagSabotages": 3063,
+ "QCInputSabotages": 3064,
+ "QCTagRemarks": 3065,
+ "QCInputRemark": 3066,
+ "QCInputAccusation": 3067,
+ "QCInputDefense": 3068,
+ "QCTagQuestionSingular": 3069,
+ "QCResAgree": 3070,
+ "QCResDisagree": 3071,
+ "QCResNice": 3072,
+ "QCResUhOh": 3073,
+ "QCResOops": 3074,
+ "QCResExclamationMarks": 3075,
+ "QCResQuestionMarks": 3076,
+ "QCBuildingPlaceholder": 3077,
+ "QCTagQuickRemarks": 3078,
+ "FixWiringName": 3079,
+ "FixLightsName": 3080,
+ "DoorsName": 3081,
+ "Undo": 3095,
+ "Clear": 3096,
+ "DivertPower": 3097,
+ "ResetReactorName": 3098,
+ "RestoreOxyName": 3099,
+ "QCAccADidntReport_QCCrewMe": 3100,
+ "QCStaACalledMeeting_QCCrewMe": 3101,
+ "QCAccAIsLyingNeg_QCCrewMe": 3102,
+ "QCResADid_QCCrewMe": 3103,
+ "QCResADidNeg_QCCrewMe": 3104,
+ "QCResAWas_QCCrewMe": 3105,
+ "QCResAWasNeg_QCCrewMe": 3106,
+ "QCResIsBeingFramed_QCCrewMe": 3107,
+ "QCAccAKilledBNeg_QCCrewMe_ANY": 3108,
+ "QCStaAWasWithB_QCCrewMe_ANY": 3109,
+ "QCStaAWasWithB_ANY_QCCrewMe": 3110,
+ "QCResCloseTo_QCCrewMe_ANY": 3111,
+ "QCAccAWasChasingB_QCCrewMe_ANY": 3112,
+ "QCAccAWasChasingBNeg_QCCrewMe_ANY": 3113,
+ "QCAccAWasChasingB_ANY_QCCrewMe": 3114,
+ "QCAccAWasChasingBNeg_ANY_QCCrewMe": 3115,
+ "QCStaASawB_QCCrewMe_ANY": 3116,
+ "QCAccASawBVent_QCCrewMe_ANY": 3117,
+ "QCAccASawBVentNeg_QCCrewMe_ANY": 3118,
+ "QCAccASawBVentNeg_ANY_QCCrewMe": 3119,
+ "QCResAWasAtB_QCCrewMe_ANY": 3120,
+ "QCResAWasAtBNeg_QCCrewMe_ANY": 3121,
+ "QCStaADidB_QCCrewMe_ANY": 3122,
+ "QCAccIsRole_QCCrewMe_ANY": 3123,
+ "QCAccIsRoleNeg_QCCrewMe_ANY": 3124,
+ "QCResProtected_ANY_QCCrewMe": 3125,
+ "QCCrewSomeone": 3126,
+ "QCResUrWelcome": 3127,
+ "QCResNp": 3128,
+ "QCResYikes": 3129,
+ "QCResRipCrew": 3130,
+ "QCResYeetCrew": 3131,
+ "QCSelfWasOnVitals": 3132,
+ "QCSawDeadCrewOnVitals": 3133,
+ "QCSelfSawTwoCrew": 3134,
+ "QCCrewShapeshifted": 3135,
+ "QCSelfSawCrewDoVisualTask": 3136,
+ "QCSelfWasOnDoorlogs": 3137,
+ "QCSelfWasOnAdmin": 3138,
+ "QCSelfAmVotingCrew": 3139,
+ "QCCrewWasPretendingTasks": 3140,
+ "QCCrewWasPretendingSabotage": 3141,
+ "QCLobbyMoreImpostors": 3142,
+ "QCLobbyLessImpostors": 3143,
+ "QCLobbyConfirmEjects": 3144,
+ "QCLobbyMoreEmergencyMeetings": 3145,
+ "QCLobbyLessEmergencyMeetings": 3146,
+ "QCLobbyAnonymousVotes": 3147,
+ "QCLobbyMoreEmergencyCooldownTime": 3148,
+ "QCLobbyLessEmergencyCooldownTime": 3149,
+ "QCLobbyMoreDiscussionTime": 3150,
+ "QCLobbyLessDiscussionTime": 3151,
+ "QCLobbyMoreVotingTime": 3152,
+ "QCLobbyLessVotingTime": 3153,
+ "QCLobbyFasterPlayerSpeed": 3154,
+ "QCLobbySlowerPlayerSpeed": 3155,
+ "QCLobbyTaskBarUpdates": 3156,
+ "QCLobbyVisualTasks": 3157,
+ "QCLobbyMoreCrewmateVision": 3158,
+ "QCLobbyLessCrewmateVision": 3159,
+ "QCLobbyMoreImpostorVision": 3160,
+ "QCLobbyLessImpostorVision": 3161,
+ "QCLobbyMoreKillCooldownTime": 3162,
+ "QCLobbyLessKillCooldownTime": 3163,
+ "QCLobbyLongerKillDistance": 3164,
+ "QCLobbyShorderKillDistance": 3165,
+ "QCLobbyMoreCommonTasks": 3166,
+ "QCLobbyLessCommonTasks": 3167,
+ "QCLobbyMoreLongTasks": 3168,
+ "QCLobbyLessLongTasks": 3169,
+ "QCLobbyMoreShortTasks": 3170,
+ "QCLobbyLessShortTasks": 3171,
+ "QCLobbyRoleScientists": 3172,
+ "QCLobbyRoleGuardianAngels": 3173,
+ "QCLobbyRoleEngineers": 3174,
+ "QCLobbyRoleShapeshifters": 3175,
+ "QCLobbyRoleNone": 3176,
+ "QCResLess": 3177,
+ "QCResMore": 3178,
+ "QCResNone": 3179,
+ "QCLobbyHNSMoreHideTime": 3180,
+ "QCLobbyHNSLessHideTime": 3181,
+ "QCLobbyHNSMoreFinalHideTime": 3182,
+ "QCLobbyHNSLessFinalHideTime": 3183,
+ "QCLobbyHNSFlashlightMode": 3184,
+ "QCLobbyHNSMoreCrewmateFlashlightSize": 3185,
+ "QCLobbyHNSLessCrewmateFlashlightSize": 3186,
+ "QCLobbyHNSMoreImpostorFlashlightSize": 3187,
+ "QCLobbyHNSLessImpostorFlashlightSize": 3188,
+ "QCLobbyHNSShowNames": 3189,
+ "QCLobbyHNSMoreVents": 3190,
+ "QCLobbyHNSLessVents": 3191,
+ "QCLobbyHNSMoreTimeInVent": 3192,
+ "QCLobbyHNSLessTimeInVent": 3193,
+ "QCLobbyHNSMoreFinalHideImpostorSpeed": 3194,
+ "QCLobbyHNSLessFinalHideImpostorSpeed": 3195,
+ "QCLobbyHNSFinalHideSeekMap": 3196,
+ "QCLobbyHNSFinalHidePings": 3197,
+ "QCLobbyHNSMorePingInterval": 3198,
+ "QCLobbyHNSLessPingInterval": 3199,
+ "SettingsColorblind": 3200,
+ "SettingsHelp": 3201,
+ "SecLogEntryColorblind": 3202,
+ "DeleteAccount": 3203,
+ "DoNotDeleteAccount": 3204,
+ "AccountDeleteHelp": 3205,
+ "AccountUnDeleteHelp": 3206,
+ "ConfirmDelete": 3207,
+ "ConfirmDeleteAccounts": 3208,
+ "ConfirmDeleteAccountsEmpty": 3209,
+ "AccountRequestDelete": 3210,
+ "HasBeenKilled": 3211,
+ "ScrollList": 3300,
+ "ScrollNews": 3301,
+ "AmongUsAnnouncements": 3302,
+ "AnnouncementErrorSubtitle": 3303,
+ "AnnouncementErrorText": 3304,
+ "ReadMoreLabel": 3305,
+ "ReturnToList": 3306,
+ "NavigateLinks": 3307,
+ "AgeVerificationTitle": 3308,
+ "AgeVerificationInfoTitle": 3309,
+ "AgeVerificationInfo": 3310,
+ "AgeVerificationMoreInfo": 3311,
+ "EditLabel": 3312,
+ "VerifyAgeText": 3313,
+ "PlayLabel": 3314,
+ "SettingsLabel": 3315,
+ "NewsLabel": 3316,
+ "AccountLabel": 3317,
+ "CreditsLabel": 3318,
+ "ShopLabel": 3319,
+ "InventoryLabel": 3320,
+ "StatsLabel": 3321,
+ "FriendsLabel": 3322,
+ "ReportNotificationHeader": 3323,
+ "ReportNotificationBody": 3324,
+ "MiningPit": 3400,
+ "Jungle": 3401,
+ "BuildSandcastle": 3402,
+ "FishingDock": 3403,
+ "CatchFish": 3404,
+ "CollectShells": 3405,
+ "LiftWeights": 3406,
+ "RoastMarshmallow": 3407,
+ "TestFrisbee": 3408,
+ "CollectSamples": 3409,
+ "CollectVegetables": 3410,
+ "HoistSupplies": 3411,
+ "MineOres": 3412,
+ "PolishGem": 3413,
+ "ReplaceParts": 3414,
+ "HelpCritter": 3415,
+ "RecRoom": 3416,
+ "Lookout": 3417,
+ "Beach": 3418,
+ "Highlands": 3419,
+ "SleepingQuarters": 3420,
+ "CrankGenerator": 3421,
+ "FixAntenna": 3422,
+ "TuneRadio": 3423,
+ "MushroomMixupSabotage": 3424,
+ "MineOresMine": 3425,
+ "CollectStick": 3426,
+ "WipeSand": 3427,
+ "ExtractFuel": 3428,
+ "MonitorMushroom": 3429,
+ "PlayVideogame": 3430,
+ "CookFish": 3431,
+ "PrepVegetables": 3432,
+ "MushroomMixupName": 3433,
+ "GameType": 3500,
+ "GameTypeError": 3501,
+ "GameTypeClassic": 3502,
+ "GameTypeHideAndSeek": 3503,
+ "PetAction": 3504,
+ "CreateLabel": 3505,
+ "TagFiltersTitle": 3506,
+ "TagFiltersHelpFindGame": 3507,
+ "TagFiltersHelpCreate": 3508,
+ "TagsFilteredSingular": 3509,
+ "TagsFilteredPlural": 3510,
+ "TagsAppliedSingular": 3511,
+ "TagsAppliedPlural": 3512,
+ "DefaultFilterTag_FirstTime": 3513,
+ "DefaultFilterTag_Casual": 3514,
+ "DefaultFilterTag_Serious": 3515,
+ "DefaultFilterTag_Expert": 3516,
+ "HttpErrorContextNone": 3517,
+ "HttpErrorContextAuthenticate": 3518,
+ "HttpErrorContextRequestGameCode": 3519,
+ "HttpErrorContextFindHostServer": 3520,
+ "HttpErrorContextRequestGamesList": 3521,
+ "HttpErrorUnknown": 3522,
+ "HttpErrorBadRequest": 3523,
+ "HttpErrorUnauthorized": 3524,
+ "HttpErrorForbidden": 3525,
+ "HttpErrorNotFound": 3526,
+ "HttpErrorMethodNotAllowed": 3527,
+ "HttpErrorRequestTimeout": 3528,
+ "HttpErrorTooManyRequests": 3529,
+ "HttpErrorInternalServerError": 3530,
+ "HttpErrorBadGateway": 3531,
+ "HttpErrorServiceUnavailable": 3532,
+ "HttpErrorGatewayTimeout": 3533
+}
\ No newline at end of file
--- /dev/null
+{
+ "English": 0,
+ "Latam": 1,
+ "Brazilian": 2,
+ "Portuguese": 3,
+ "Korean": 4,
+ "Russian": 5,
+ "Dutch": 6,
+ "Filipino": 7,
+ "French": 8,
+ "German": 9,
+ "Italian": 10,
+ "Japanese": 11,
+ "Spanish": 12,
+ "SChinese": 13,
+ "TChinese": 14,
+ "Irish": 15
+}
\ No newline at end of file
--- /dev/null
+{
+ "Hallway": 0,
+ "Storage": 1,
+ "Cafeteria": 2,
+ "Reactor": 3,
+ "UpperEngine": 4,
+ "Nav": 5,
+ "Admin": 6,
+ "Electrical": 7,
+ "LifeSupp": 8,
+ "Shields": 9,
+ "MedBay": 10,
+ "Security": 11,
+ "Weapons": 12,
+ "LowerEngine": 13,
+ "Comms": 14,
+ "ShipTasks": 15,
+ "Doors": 16,
+ "Sabotage": 17,
+ "Decontamination": 18,
+ "Launchpad": 19,
+ "LockerRoom": 20,
+ "Laboratory": 21,
+ "Balcony": 22,
+ "Office": 23,
+ "Greenhouse": 24,
+ "Dropship": 25,
+ "Decontamination2": 26,
+ "Outside": 27,
+ "Specimens": 28,
+ "BoilerRoom": 29,
+ "VaultRoom": 30,
+ "Cockpit": 31,
+ "Armory": 32,
+ "Kitchen": 33,
+ "ViewingDeck": 34,
+ "HallOfPortraits": 35,
+ "CargoBay": 36,
+ "Ventilation": 37,
+ "Showers": 38,
+ "Engine": 39,
+ "Brig": 40,
+ "MeetingRoom": 41,
+ "Records": 42,
+ "Lounge": 43,
+ "GapRoom": 44,
+ "MainHall": 45,
+ "Medical": 46,
+ "Decontamination3": 47,
+ "Zipline": 48,
+ "MiningPit": 49,
+ "FishingDock": 50,
+ "RecRoom": 51,
+ "Lookout": 52,
+ "Beach": 53,
+ "Highlands": 54,
+ "Jungle": 55,
+ "SleepingQuarters": 56,
+ "MushroomMixupSabotage": 57,
+ "HeliSabotage": 58
+}
\ No newline at end of file
--- /dev/null
+{
+ "SubmitScan": 0,
+ "PrimeShields": 1,
+ "FuelEngines": 2,
+ "ChartCourse": 3,
+ "StartReactor": 4,
+ "SwipeCard": 5,
+ "ClearAsteroids": 6,
+ "UploadData": 7,
+ "InspectSample": 8,
+ "EmptyChute": 9,
+ "EmptyGarbage": 10,
+ "AlignEngineOutput": 11,
+ "FixWiring": 12,
+ "CalibrateDistributor": 13,
+ "DivertPower": 14,
+ "UnlockManifolds": 15,
+ "ResetReactor": 16,
+ "FixLights": 17,
+ "CleanO2Filter": 18,
+ "FixComms": 19,
+ "RestoreOxy": 20,
+ "StabilizeSteering": 21,
+ "AssembleArtifact": 22,
+ "SortSamples": 23,
+ "MeasureWeather": 24,
+ "EnterIdCode": 25,
+ "BuyBeverage": 26,
+ "ProcessData": 27,
+ "RunDiagnostics": 28,
+ "WaterPlants": 29,
+ "MonitorOxygen": 30,
+ "StoreArtifacts": 31,
+ "FillCanisters": 32,
+ "FixWeatherNode": 33,
+ "InsertKeys": 34,
+ "ResetSeismic": 35,
+ "ScanBoardingPass": 36,
+ "OpenWaterways": 37,
+ "ReplaceWaterJug": 38,
+ "RepairDrill": 39,
+ "AlignTelescope": 40,
+ "RecordTemperature": 41,
+ "RebootWifi": 42,
+ "PolishRuby": 43,
+ "ResetBreakers": 44,
+ "Decontaminate": 45,
+ "MakeBurger": 46,
+ "UnlockSafe": 47,
+ "SortRecords": 48,
+ "PutAwayPistols": 49,
+ "FixShower": 50,
+ "CleanToilet": 51,
+ "DressMannequin": 52,
+ "PickUpTowels": 53,
+ "RewindTapes": 54,
+ "StartFans": 55,
+ "DevelopPhotos": 56,
+ "GetBiggolSword": 57,
+ "PutAwayRifles": 58,
+ "StopCharles": 59,
+ "VentCleaning": 60,
+ "None": 61,
+ "BuildSandcastle": 62,
+ "CatchFish": 63,
+ "CollectShells": 64,
+ "LiftWeights": 65,
+ "RoastMarshmallow": 66,
+ "TestFrisbee": 67,
+ "CollectSamples": 68,
+ "CollectVegetables": 69,
+ "HoistSupplies": 70,
+ "MineOres": 71,
+ "PolishGem": 72,
+ "ReplaceParts": 73,
+ "HelpCritter": 74,
+ "CrankGenerator": 75,
+ "FixAntenna": 76,
+ "TuneRadio": 77,
+ "MushroomMixupSabotage": 78,
+ "ExtractFuel": 79,
+ "MonitorMushroom": 80,
+ "PlayVideogame": 81
+}
\ No newline at end of file
--- /dev/null
+{
+ "dumpostorVersion": "1.0.0",
+ "gameVersion": "2023.10.24",
+ "platformType": "StandaloneSteamPC"
+}
\ No newline at end of file
--- /dev/null
+{
+ "0": {
+ "room": "Comms",
+ "position": {
+ "x": -16.191698,
+ "y": -0.90999997
+ }
+ },
+ "1": {
+ "room": "Comms",
+ "position": {
+ "x": -8.663198,
+ "y": -0.9099996
+ }
+ },
+ "2": {
+ "room": "Comms",
+ "position": {
+ "x": -13.362299,
+ "y": -0.015400052
+ }
+ },
+ "3": {
+ "room": "Comms",
+ "position": {
+ "x": -10.975999,
+ "y": -2.3309999
+ }
+ },
+ "4": {
+ "room": "Brig",
+ "position": {
+ "x": -0.9260999,
+ "y": 7.100799
+ }
+ },
+ "5": {
+ "room": "Brig",
+ "position": {
+ "x": -3.6364996,
+ "y": 8.784999
+ }
+ },
+ "6": {
+ "room": "Brig",
+ "position": {
+ "x": 2.7145998,
+ "y": 8.850798
+ }
+ },
+ "7": {
+ "room": "Kitchen",
+ "position": {
+ "x": -8.764699,
+ "y": -7.2687993
+ }
+ },
+ "8": {
+ "room": "Kitchen",
+ "position": {
+ "x": -8.764699,
+ "y": -11.976298
+ }
+ },
+ "9": {
+ "room": "Kitchen",
+ "position": {
+ "x": -1.4979999,
+ "y": -12.040699
+ }
+ },
+ "10": {
+ "room": "MainHall",
+ "position": {
+ "x": 4.2496986,
+ "y": 0.042
+ }
+ },
+ "11": {
+ "room": "MainHall",
+ "position": {
+ "x": 17.490198,
+ "y": 0.04619999
+ }
+ },
+ "12": {
+ "room": "Records",
+ "position": {
+ "x": 16.382797,
+ "y": 9.368099
+ }
+ },
+ "13": {
+ "room": "Records",
+ "position": {
+ "x": 23.97472,
+ "y": 9.368099
+ }
+ },
+ "14": {
+ "room": "Records",
+ "position": {
+ "x": 19.858297,
+ "y": 5.601399
+ }
+ },
+ "15": {
+ "room": "Lounge",
+ "position": {
+ "x": 29.2544,
+ "y": 6.6990004
+ }
+ },
+ "16": {
+ "room": "Lounge",
+ "position": {
+ "x": 30.7944,
+ "y": 6.6990004
+ }
+ },
+ "17": {
+ "room": "Lounge",
+ "position": {
+ "x": 32.2924,
+ "y": 6.6990004
+ }
+ },
+ "18": {
+ "room": "Lounge",
+ "position": {
+ "x": 33.7771,
+ "y": 6.6990004
+ }
+ },
+ "19": {
+ "room": "Medical",
+ "position": {
+ "x": 21.314297,
+ "y": -8.416099
+ }
+ },
+ "20": {
+ "room": "Medical",
+ "position": {
+ "x": 32.540195,
+ "y": -4.694899
+ }
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "initialSpawnCenter": {
+ "x": -25,
+ "y": 40
+ },
+ "meetingSpawnCenter": {
+ "x": 20,
+ "y": 9
+ },
+ "meetingSpawnCenter2": {
+ "x": 20,
+ "y": 9
+ },
+ "spawnRadius": 1.55
+}
\ No newline at end of file
--- /dev/null
+{
+ "Electrical": "SwitchSystem",
+ "MedBay": "MedScanSystem",
+ "Doors": "DoorsSystemType",
+ "Comms": "HudOverrideSystemType",
+ "GapRoom": "MovingPlatformBehaviour",
+ "HeliSabotage": "HeliSabotageSystem",
+ "Decontamination": "ElectricalDoors",
+ "Decontamination2": "AutoDoorsSystemType",
+ "Security": "SecurityCameraSystemType",
+ "Ventilation": "VentilationSystem",
+ "Sabotage": "SabotageSystemType"
+}
\ No newline at end of file
--- /dev/null
+{
+ "0": {
+ "type": "NormalPlayerTask",
+ "taskType": "FixWiring",
+ "length": "Common",
+ "consoles": [
+ {
+ "id": 1,
+ "room": "Engine",
+ "position": {
+ "x": -7.021,
+ "y": 1.4909999
+ },
+ "usableDistance": 0.7
+ },
+ {
+ "id": 0,
+ "room": "ViewingDeck",
+ "position": {
+ "x": -10.290699,
+ "y": -11.334398
+ },
+ "usableDistance": 0.7
+ },
+ {
+ "id": 2,
+ "room": "MainHall",
+ "position": {
+ "x": 16.212,
+ "y": 2.8630004
+ },
+ "usableDistance": 0.7
+ },
+ {
+ "id": 3,
+ "room": "Showers",
+ "position": {
+ "x": 17.0821,
+ "y": 5.481
+ },
+ "usableDistance": 0.7
+ },
+ {
+ "id": 4,
+ "room": "Lounge",
+ "position": {
+ "x": 27.3574,
+ "y": 10.388
+ },
+ "usableDistance": 0.7
+ },
+ {
+ "id": 5,
+ "room": "CargoBay",
+ "position": {
+ "x": 35.154,
+ "y": 3.9129996
+ },
+ "usableDistance": 0.7
+ },
+ {
+ "id": 6,
+ "room": "MeetingRoom",
+ "position": {
+ "x": 14.077001,
+ "y": 16.484999
+ },
+ "usableDistance": 0.7
+ }
+ ]
+ },
+ "1": {
+ "type": "NormalPlayerTask",
+ "taskType": "EnterIdCode",
+ "length": "Common",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Cockpit",
+ "position": {
+ "x": 16.201427,
+ "y": 16.331
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "2": {
+ "type": "NormalPlayerTask",
+ "taskType": "CalibrateDistributor",
+ "length": "Long",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Electrical",
+ "position": {
+ "x": 16.346632,
+ "y": -5.4998994
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "3": {
+ "type": "NormalPlayerTask",
+ "taskType": "ResetBreakers",
+ "length": "Long",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Electrical",
+ "position": {
+ "x": 17.29,
+ "y": -10.1535
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 1,
+ "room": "Electrical",
+ "position": {
+ "x": 20.267416,
+ "y": -10.1535
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 2,
+ "room": "Electrical",
+ "position": {
+ "x": 18.424,
+ "y": -7.7385
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 3,
+ "room": "Electrical",
+ "position": {
+ "x": 17.29,
+ "y": -7.7385
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 4,
+ "room": "Electrical",
+ "position": {
+ "x": 12.334001,
+ "y": -7.7385
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 5,
+ "room": "Electrical",
+ "position": {
+ "x": 18.417,
+ "y": -5.3375
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 6,
+ "room": "Electrical",
+ "position": {
+ "x": 15.365001,
+ "y": -7.7385
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "4": {
+ "type": "AirshipUploadTask",
+ "taskType": "UploadData",
+ "length": "Long",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "ViewingDeck",
+ "position": {
+ "x": -14.4641,
+ "y": -16.387701
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 0,
+ "room": "ViewingDeck",
+ "position": {
+ "x": 10.4685,
+ "y": -16.218298
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "5": {
+ "type": "AirshipUploadTask",
+ "taskType": "UploadData",
+ "length": "Long",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "ViewingDeck",
+ "position": {
+ "x": -14.4641,
+ "y": -16.387701
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 0,
+ "room": "ViewingDeck",
+ "position": {
+ "x": 10.4685,
+ "y": -16.218298
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "6": {
+ "type": "AirshipUploadTask",
+ "taskType": "UploadData",
+ "length": "Long",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "ViewingDeck",
+ "position": {
+ "x": -14.4641,
+ "y": -16.387701
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 0,
+ "room": "ViewingDeck",
+ "position": {
+ "x": 10.4685,
+ "y": -16.218298
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "7": {
+ "type": "AirshipUploadTask",
+ "taskType": "UploadData",
+ "length": "Long",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "ViewingDeck",
+ "position": {
+ "x": -14.4641,
+ "y": -16.387701
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 0,
+ "room": "ViewingDeck",
+ "position": {
+ "x": 10.4685,
+ "y": -16.218298
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "8": {
+ "type": "AirshipUploadTask",
+ "taskType": "UploadData",
+ "length": "Long",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "ViewingDeck",
+ "position": {
+ "x": -14.4641,
+ "y": -16.387701
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 0,
+ "room": "ViewingDeck",
+ "position": {
+ "x": 10.4685,
+ "y": -16.218298
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "9": {
+ "type": "NormalPlayerTask",
+ "taskType": "UnlockSafe",
+ "length": "Long",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "CargoBay",
+ "position": {
+ "x": 36.302,
+ "y": -2.688
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "10": {
+ "type": "NormalPlayerTask",
+ "taskType": "StartFans",
+ "length": "Long",
+ "consoles": []
+ },
+ "11": {
+ "type": "NormalPlayerTask",
+ "taskType": "EmptyGarbage",
+ "length": "Long",
+ "consoles": []
+ },
+ "12": {
+ "type": "NormalPlayerTask",
+ "taskType": "EmptyGarbage",
+ "length": "Long",
+ "consoles": []
+ },
+ "13": {
+ "type": "NormalPlayerTask",
+ "taskType": "EmptyGarbage",
+ "length": "Long",
+ "consoles": []
+ },
+ "14": {
+ "type": "NormalPlayerTask",
+ "taskType": "DevelopPhotos",
+ "length": "Long",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "MainHall",
+ "position": {
+ "x": 13.527709,
+ "y": 2.3494914
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "15": {
+ "type": "NormalPlayerTask",
+ "taskType": "FuelEngines",
+ "length": "Long",
+ "consoles": []
+ },
+ "16": {
+ "type": "NormalPlayerTask",
+ "taskType": "RewindTapes",
+ "length": "Long",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Security",
+ "position": {
+ "x": 8.1305,
+ "y": -11.535298
+ },
+ "usableDistance": 1.4
+ }
+ ]
+ },
+ "17": {
+ "type": "NormalPlayerTask",
+ "taskType": "EmptyGarbage",
+ "length": "Long",
+ "consoles": []
+ },
+ "18": {
+ "type": "NormalPlayerTask",
+ "taskType": "EmptyGarbage",
+ "length": "Long",
+ "consoles": []
+ },
+ "19": {
+ "type": "NormalPlayerTask",
+ "taskType": "PolishRuby",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "VaultRoom",
+ "position": {
+ "x": -8.851499,
+ "y": 9.099999
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "20": {
+ "type": "NormalPlayerTask",
+ "taskType": "StabilizeSteering",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Cockpit",
+ "position": {
+ "x": -19.676998,
+ "y": -0.791
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "21": {
+ "type": "AirshipUploadTask",
+ "taskType": "UploadData",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "ViewingDeck",
+ "position": {
+ "x": -14.4641,
+ "y": -16.387701
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 0,
+ "room": "ViewingDeck",
+ "position": {
+ "x": 10.4685,
+ "y": -16.218298
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "22": {
+ "type": "AirshipUploadTask",
+ "taskType": "UploadData",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "ViewingDeck",
+ "position": {
+ "x": -14.4641,
+ "y": -16.387701
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 0,
+ "room": "ViewingDeck",
+ "position": {
+ "x": 10.4685,
+ "y": -16.218298
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "23": {
+ "type": "AirshipUploadTask",
+ "taskType": "UploadData",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "ViewingDeck",
+ "position": {
+ "x": -14.4641,
+ "y": -16.387701
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 0,
+ "room": "ViewingDeck",
+ "position": {
+ "x": 10.4685,
+ "y": -16.218298
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "24": {
+ "type": "AirshipUploadTask",
+ "taskType": "UploadData",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "ViewingDeck",
+ "position": {
+ "x": -14.4641,
+ "y": -16.387701
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 0,
+ "room": "ViewingDeck",
+ "position": {
+ "x": 10.4685,
+ "y": -16.218298
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "25": {
+ "type": "AirshipUploadTask",
+ "taskType": "UploadData",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "ViewingDeck",
+ "position": {
+ "x": -14.4641,
+ "y": -16.387701
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 0,
+ "room": "ViewingDeck",
+ "position": {
+ "x": 10.4685,
+ "y": -16.218298
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "26": {
+ "type": "DivertPowerTask",
+ "taskType": "DivertPower",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Electrical",
+ "position": {
+ "x": 17.59529,
+ "y": -3.7142
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "27": {
+ "type": "DivertPowerTask",
+ "taskType": "DivertPower",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Electrical",
+ "position": {
+ "x": 17.59529,
+ "y": -3.7142
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "28": {
+ "type": "DivertPowerTask",
+ "taskType": "DivertPower",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Electrical",
+ "position": {
+ "x": 17.59529,
+ "y": -3.7142
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "29": {
+ "type": "DivertPowerTask",
+ "taskType": "DivertPower",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Electrical",
+ "position": {
+ "x": 17.59529,
+ "y": -3.7142
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "30": {
+ "type": "DivertPowerTask",
+ "taskType": "DivertPower",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Electrical",
+ "position": {
+ "x": 17.59529,
+ "y": -3.7142
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "31": {
+ "type": "DivertPowerTask",
+ "taskType": "DivertPower",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Electrical",
+ "position": {
+ "x": 17.59529,
+ "y": -3.7142
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "32": {
+ "type": "DivertPowerTask",
+ "taskType": "DivertPower",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Electrical",
+ "position": {
+ "x": 17.59529,
+ "y": -3.7142
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "33": {
+ "type": "TowelTask",
+ "taskType": "PickUpTowels",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Showers",
+ "position": {
+ "x": 17.3159,
+ "y": 4.7469535
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 1,
+ "room": "Showers",
+ "position": {
+ "x": 20.3819,
+ "y": 4.5709996
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 2,
+ "room": "Showers",
+ "position": {
+ "x": 21.8169,
+ "y": 2.464
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 3,
+ "room": "Showers",
+ "position": {
+ "x": 18.848902,
+ "y": -0.90999997
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 4,
+ "room": "Showers",
+ "position": {
+ "x": 24.0359,
+ "y": -2.1839998
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 5,
+ "room": "Showers",
+ "position": {
+ "x": 20.5499,
+ "y": -1.736
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 6,
+ "room": "Showers",
+ "position": {
+ "x": 22.0129,
+ "y": -1.428
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 7,
+ "room": "Showers",
+ "position": {
+ "x": 20.0809,
+ "y": -0.04199996
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 8,
+ "room": "Showers",
+ "position": {
+ "x": 19.1849,
+ "y": 3.3669999
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 9,
+ "room": "Showers",
+ "position": {
+ "x": 22.9649,
+ "y": 0.055999946
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 10,
+ "room": "Showers",
+ "position": {
+ "x": 18.134901,
+ "y": 2.072
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 11,
+ "room": "Showers",
+ "position": {
+ "x": 23.041899,
+ "y": -1.491
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 12,
+ "room": "Showers",
+ "position": {
+ "x": 22.917301,
+ "y": -1.3524001
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 13,
+ "room": "Showers",
+ "position": {
+ "x": 23.1231,
+ "y": -1.4
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 255,
+ "room": "Showers",
+ "position": {
+ "x": 18.7929,
+ "y": 5.138
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "34": {
+ "type": "NormalPlayerTask",
+ "taskType": "CleanToilet",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Lounge",
+ "position": {
+ "x": 29.191824,
+ "y": 7.739511
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 1,
+ "room": "Lounge",
+ "position": {
+ "x": 30.808395,
+ "y": 7.7209997
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 2,
+ "room": "Lounge",
+ "position": {
+ "x": 32.320076,
+ "y": 7.764191
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 3,
+ "room": "Lounge",
+ "position": {
+ "x": 33.735863,
+ "y": 7.791699
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "35": {
+ "type": "NormalPlayerTask",
+ "taskType": "DressMannequin",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "VaultRoom",
+ "position": {
+ "x": -7.3842983,
+ "y": 6.4301996
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "36": {
+ "type": "NormalPlayerTask",
+ "taskType": "SortRecords",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 5,
+ "room": "Records",
+ "position": {
+ "x": 17.935398,
+ "y": 11.4016
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 6,
+ "room": "Records",
+ "position": {
+ "x": 21.8547,
+ "y": 11.4163
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 0,
+ "room": "Records",
+ "position": {
+ "x": 19.893847,
+ "y": 9.273678
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 1,
+ "room": "Records",
+ "position": {
+ "x": 18.687897,
+ "y": 12.503397
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 2,
+ "room": "Records",
+ "position": {
+ "x": 19.2549,
+ "y": 12.7015
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 3,
+ "room": "Records",
+ "position": {
+ "x": 20.519602,
+ "y": 12.718999
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 4,
+ "room": "Records",
+ "position": {
+ "x": 21.107098,
+ "y": 12.527897
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 7,
+ "room": "Records",
+ "position": {
+ "x": 21.5992,
+ "y": 7.07
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 8,
+ "room": "Records",
+ "position": {
+ "x": 18.186699,
+ "y": 7.0651
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "37": {
+ "type": "NormalPlayerTask",
+ "taskType": "PutAwayPistols",
+ "length": "Short",
+ "consoles": []
+ },
+ "38": {
+ "type": "NormalPlayerTask",
+ "taskType": "PutAwayRifles",
+ "length": "Short",
+ "consoles": []
+ },
+ "39": {
+ "type": "NormalPlayerTask",
+ "taskType": "Decontaminate",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "MainHall",
+ "position": {
+ "x": 14.791556,
+ "y": 3.7029998
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 0,
+ "room": "Hallway",
+ "position": {
+ "x": 14.791556,
+ "y": 3.7029998
+ },
+ "usableDistance": 0.8
+ }
+ ]
+ },
+ "40": {
+ "type": "NormalPlayerTask",
+ "taskType": "MakeBurger",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Kitchen",
+ "position": {
+ "x": -5.1793,
+ "y": -8.5239
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "41": {
+ "type": "NormalPlayerTask",
+ "taskType": "FixShower",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Showers",
+ "position": {
+ "x": 20.8159,
+ "y": 3.2759998
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "42": {
+ "type": "NormalPlayerTask",
+ "taskType": "VentCleaning",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 1,
+ "room": "Cockpit",
+ "position": {
+ "x": -22.098999,
+ "y": -1.5120001
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 3,
+ "room": "Engine",
+ "position": {
+ "x": 0.20299996,
+ "y": -2.5361004
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 0,
+ "room": "VaultRoom",
+ "position": {
+ "x": -12.632198,
+ "y": 8.4735
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 4,
+ "room": "Kitchen",
+ "position": {
+ "x": -2.6018999,
+ "y": -9.338
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 2,
+ "room": "ViewingDeck",
+ "position": {
+ "x": -15.658999,
+ "y": -11.6991005
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 8,
+ "room": "GapRoom",
+ "position": {
+ "x": 3.6049998,
+ "y": 6.9230003
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 7,
+ "room": "GapRoom",
+ "position": {
+ "x": 12.663,
+ "y": 5.922
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 5,
+ "room": "MainHall",
+ "position": {
+ "x": 7.0210004,
+ "y": -3.7309995
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 6,
+ "room": "MainHall",
+ "position": {
+ "x": 9.814,
+ "y": 3.2060003
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 9,
+ "room": "Showers",
+ "position": {
+ "x": 23.9869,
+ "y": -1.386
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 10,
+ "room": "Records",
+ "position": {
+ "x": 23.279898,
+ "y": 8.259998
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 11,
+ "room": "CargoBay",
+ "position": {
+ "x": 30.440897,
+ "y": -3.5770001
+ },
+ "usableDistance": 1
+ }
+ ]
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "0": {
+ "name": "VaultVent",
+ "position": {
+ "x": -12.632198,
+ "y": 8.4735
+ },
+ "left": 1,
+ "center": null,
+ "right": null
+ },
+ "1": {
+ "name": "CockpitVent",
+ "position": {
+ "x": -22.098999,
+ "y": -1.5120001
+ },
+ "left": 0,
+ "center": null,
+ "right": 2
+ },
+ "2": {
+ "name": "EjectionVent",
+ "position": {
+ "x": -15.658999,
+ "y": -11.6991005
+ },
+ "left": 1,
+ "center": null,
+ "right": null
+ },
+ "3": {
+ "name": "EngineVent",
+ "position": {
+ "x": 0.20299996,
+ "y": -2.5361004
+ },
+ "left": 4,
+ "center": null,
+ "right": 5
+ },
+ "4": {
+ "name": "KitchenVent",
+ "position": {
+ "x": -2.6018999,
+ "y": -9.338
+ },
+ "left": 3,
+ "center": null,
+ "right": 5
+ },
+ "5": {
+ "name": "HallwayVent1",
+ "position": {
+ "x": 7.0210004,
+ "y": -3.7309995
+ },
+ "left": 3,
+ "center": null,
+ "right": 4
+ },
+ "6": {
+ "name": "HallwayVent2",
+ "position": {
+ "x": 9.814,
+ "y": 3.2060003
+ },
+ "left": 8,
+ "center": null,
+ "right": 7
+ },
+ "7": {
+ "name": "GaproomVent2",
+ "position": {
+ "x": 12.663,
+ "y": 5.922
+ },
+ "left": 8,
+ "center": null,
+ "right": 6
+ },
+ "8": {
+ "name": "GaproomVent1",
+ "position": {
+ "x": 3.6049998,
+ "y": 6.9230003
+ },
+ "left": 7,
+ "center": null,
+ "right": 6
+ },
+ "9": {
+ "name": "ShowersVent",
+ "position": {
+ "x": 23.9869,
+ "y": -1.386
+ },
+ "left": 10,
+ "center": null,
+ "right": 11
+ },
+ "10": {
+ "name": "RecordsVent",
+ "position": {
+ "x": 23.279898,
+ "y": 8.259998
+ },
+ "left": 9,
+ "center": null,
+ "right": 11
+ },
+ "11": {
+ "name": "StorageVent",
+ "position": {
+ "x": 30.440897,
+ "y": -3.5770001
+ },
+ "left": 9,
+ "center": null,
+ "right": 10
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "0": {
+ "room": "Cafeteria",
+ "position": {
+ "x": 6.3936,
+ "y": 1.33848
+ }
+ },
+ "1": {
+ "room": "Storage",
+ "position": {
+ "x": 5.268,
+ "y": -14.2884
+ }
+ },
+ "2": {
+ "room": "UpperEngine",
+ "position": {
+ "x": 16.930801,
+ "y": -2.1276002
+ }
+ },
+ "3": {
+ "room": "Cafeteria",
+ "position": {
+ "x": 0.708,
+ "y": -4.992
+ }
+ },
+ "4": {
+ "room": "LowerEngine",
+ "position": {
+ "x": 14.6808,
+ "y": -11.472
+ }
+ },
+ "5": {
+ "room": "UpperEngine",
+ "position": {
+ "x": 14.676002,
+ "y": 1.3406401
+ }
+ },
+ "6": {
+ "room": "Security",
+ "position": {
+ "x": 14.734801,
+ "y": -5.1417603
+ }
+ },
+ "7": {
+ "room": "Storage",
+ "position": {
+ "x": -1.1316001,
+ "y": -11.98128
+ }
+ },
+ "8": {
+ "room": "Cafeteria",
+ "position": {
+ "x": -5.1432004,
+ "y": 1.3355999
+ }
+ },
+ "9": {
+ "room": "Electrical",
+ "position": {
+ "x": 9.53616,
+ "y": -13.416001
+ }
+ },
+ "10": {
+ "room": "MedBay",
+ "position": {
+ "x": 9.1452,
+ "y": -0.4439999
+ }
+ },
+ "11": {
+ "room": "LowerEngine",
+ "position": {
+ "x": 16.930801,
+ "y": -8.9664
+ }
+ },
+ "12": {
+ "room": "Storage",
+ "position": {
+ "x": 0.70919997,
+ "y": -8.560801
+ }
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "initialSpawnCenter": {
+ "x": -0.72,
+ "y": 0.62
+ },
+ "meetingSpawnCenter": {
+ "x": -0.72,
+ "y": 0.62
+ },
+ "meetingSpawnCenter2": {
+ "x": 0,
+ "y": 0
+ },
+ "spawnRadius": 1.6
+}
\ No newline at end of file
--- /dev/null
+{
+ "Electrical": "SwitchSystem",
+ "MedBay": "MedScanSystem",
+ "Doors": "AutoDoorsSystemType",
+ "Comms": "HudOverrideSystemType",
+ "Security": "SecurityCameraSystemType",
+ "Reactor": "ReactorSystemType",
+ "LifeSupp": "LifeSuppSystemType",
+ "Ventilation": "VentilationSystem",
+ "Sabotage": "SabotageSystemType"
+}
\ No newline at end of file
--- /dev/null
+{
+ "0": {
+ "type": "NormalPlayerTask",
+ "taskType": "SwipeCard",
+ "length": "Common",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Admin",
+ "position": {
+ "x": -5.6352005,
+ "y": -8.632801
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "1": {
+ "type": "NormalPlayerTask",
+ "taskType": "FixWiring",
+ "length": "Common",
+ "consoles": [
+ {
+ "id": 2,
+ "room": "Admin",
+ "position": {
+ "x": -1.392,
+ "y": -6.4092
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 4,
+ "room": "Cafeteria",
+ "position": {
+ "x": 5.2811995,
+ "y": 5.2464
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 3,
+ "room": "Nav",
+ "position": {
+ "x": -14.5199995,
+ "y": -3.7740002
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 0,
+ "room": "Electrical",
+ "position": {
+ "x": 7.7279997,
+ "y": -7.6668
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 1,
+ "room": "Storage",
+ "position": {
+ "x": 1.932,
+ "y": -8.7204
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 5,
+ "room": "Security",
+ "position": {
+ "x": 15.5592,
+ "y": -4.5923996
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "2": {
+ "type": "NormalPlayerTask",
+ "taskType": "ClearAsteroids",
+ "length": "Long",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Weapons",
+ "position": {
+ "x": -9.087601,
+ "y": 1.812
+ },
+ "usableDistance": 1.2
+ }
+ ]
+ },
+ "3": {
+ "type": "NormalPlayerTask",
+ "taskType": "AlignEngineOutput",
+ "length": "Long",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "LowerEngine",
+ "position": {
+ "x": 19.150799,
+ "y": -12.618
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 1,
+ "room": "UpperEngine",
+ "position": {
+ "x": 19.176,
+ "y": -0.41442212
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "4": {
+ "type": "NormalPlayerTask",
+ "taskType": "SubmitScan",
+ "length": "Long",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "MedBay",
+ "position": {
+ "x": 7.3284,
+ "y": -5.2476006
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "5": {
+ "type": "NormalPlayerTask",
+ "taskType": "InspectSample",
+ "length": "Long",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "MedBay",
+ "position": {
+ "x": 6.144,
+ "y": -4.2599998
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "6": {
+ "type": "NormalPlayerTask",
+ "taskType": "FuelEngines",
+ "length": "Long",
+ "consoles": []
+ },
+ "7": {
+ "type": "NormalPlayerTask",
+ "taskType": "StartReactor",
+ "length": "Long",
+ "consoles": [
+ {
+ "id": 2,
+ "room": "Reactor",
+ "position": {
+ "x": 21.792,
+ "y": -5.5728
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "8": {
+ "type": "NormalPlayerTask",
+ "taskType": "EmptyChute",
+ "length": "Long",
+ "consoles": []
+ },
+ "9": {
+ "type": "NormalPlayerTask",
+ "taskType": "EmptyGarbage",
+ "length": "Long",
+ "consoles": []
+ },
+ "10": {
+ "type": "UploadDataTask",
+ "taskType": "UploadData",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Admin",
+ "position": {
+ "x": -2.5079997,
+ "y": -6.2652006
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "11": {
+ "type": "NormalPlayerTask",
+ "taskType": "CalibrateDistributor",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Electrical",
+ "position": {
+ "x": 5.8644004,
+ "y": -7.4772
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "12": {
+ "type": "NormalPlayerTask",
+ "taskType": "ChartCourse",
+ "length": "Short",
+ "consoles": []
+ },
+ "13": {
+ "type": "NormalPlayerTask",
+ "taskType": "CleanO2Filter",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "LifeSupp",
+ "position": {
+ "x": -5.7432,
+ "y": -2.9772
+ },
+ "usableDistance": 0.8
+ }
+ ]
+ },
+ "14": {
+ "type": "NormalPlayerTask",
+ "taskType": "UnlockManifolds",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 2,
+ "room": "Reactor",
+ "position": {
+ "x": 22.536001,
+ "y": -2.4996
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "15": {
+ "type": "UploadDataTask",
+ "taskType": "UploadData",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Admin",
+ "position": {
+ "x": -2.5079997,
+ "y": -6.2652006
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "16": {
+ "type": "NormalPlayerTask",
+ "taskType": "StabilizeSteering",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Nav",
+ "position": {
+ "x": -18.732,
+ "y": -4.728
+ },
+ "usableDistance": 1.25
+ }
+ ]
+ },
+ "17": {
+ "type": "UploadDataTask",
+ "taskType": "UploadData",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Admin",
+ "position": {
+ "x": -2.5079997,
+ "y": -6.2652006
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "18": {
+ "type": "NormalPlayerTask",
+ "taskType": "PrimeShields",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Shields",
+ "position": {
+ "x": -7.526399,
+ "y": -13.981199
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "19": {
+ "type": "UploadDataTask",
+ "taskType": "UploadData",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Admin",
+ "position": {
+ "x": -2.5079997,
+ "y": -6.2652006
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "20": {
+ "type": "UploadDataTask",
+ "taskType": "UploadData",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Admin",
+ "position": {
+ "x": -2.5079997,
+ "y": -6.2652006
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "21": {
+ "type": "DivertPowerTask",
+ "taskType": "DivertPower",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Electrical",
+ "position": {
+ "x": 9,
+ "y": -7.2936006
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "22": {
+ "type": "DivertPowerTask",
+ "taskType": "DivertPower",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Electrical",
+ "position": {
+ "x": 9,
+ "y": -7.2936006
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "23": {
+ "type": "DivertPowerTask",
+ "taskType": "DivertPower",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Electrical",
+ "position": {
+ "x": 9,
+ "y": -7.2936006
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "24": {
+ "type": "DivertPowerTask",
+ "taskType": "DivertPower",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Electrical",
+ "position": {
+ "x": 9,
+ "y": -7.2936006
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "25": {
+ "type": "DivertPowerTask",
+ "taskType": "DivertPower",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Electrical",
+ "position": {
+ "x": 9,
+ "y": -7.2936006
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "26": {
+ "type": "DivertPowerTask",
+ "taskType": "DivertPower",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Electrical",
+ "position": {
+ "x": 9,
+ "y": -7.2936006
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "27": {
+ "type": "DivertPowerTask",
+ "taskType": "DivertPower",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Electrical",
+ "position": {
+ "x": 9,
+ "y": -7.2936006
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "28": {
+ "type": "DivertPowerTask",
+ "taskType": "DivertPower",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Electrical",
+ "position": {
+ "x": 9,
+ "y": -7.2936006
+ },
+ "usableDistance": 1
+ }
+ ]
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "0": {
+ "name": "AdminVent",
+ "position": {
+ "x": -2.544,
+ "y": -9.955201
+ },
+ "left": 2,
+ "center": null,
+ "right": 1
+ },
+ "1": {
+ "name": "BigYVent",
+ "position": {
+ "x": -9.384,
+ "y": -6.438
+ },
+ "left": 0,
+ "center": null,
+ "right": 2
+ },
+ "2": {
+ "name": "CafeVent",
+ "position": {
+ "x": -4.2588,
+ "y": -0.27600002
+ },
+ "left": 0,
+ "center": null,
+ "right": 1
+ },
+ "3": {
+ "name": "ElecVent",
+ "position": {
+ "x": 9.7764,
+ "y": -8.034
+ },
+ "left": 5,
+ "center": null,
+ "right": 6
+ },
+ "4": {
+ "name": "LEngineVent",
+ "position": {
+ "x": 15.288,
+ "y": 2.52
+ },
+ "left": 11,
+ "center": null,
+ "right": null
+ },
+ "5": {
+ "name": "LifeSuppVent",
+ "position": {
+ "x": 12.534,
+ "y": -6.9492
+ },
+ "left": 6,
+ "center": null,
+ "right": 3
+ },
+ "6": {
+ "name": "MedVent",
+ "position": {
+ "x": 10.608001,
+ "y": -4.176
+ },
+ "left": 5,
+ "center": null,
+ "right": 3
+ },
+ "7": {
+ "name": "WeaponsVent",
+ "position": {
+ "x": -8.820001,
+ "y": 3.3240001
+ },
+ "left": null,
+ "center": null,
+ "right": 12
+ },
+ "8": {
+ "name": "ReactorVent",
+ "position": {
+ "x": 20.796001,
+ "y": -6.9528003
+ },
+ "left": 9,
+ "center": null,
+ "right": null
+ },
+ "9": {
+ "name": "REngineVent",
+ "position": {
+ "x": 15.2508,
+ "y": -13.656001
+ },
+ "left": 8,
+ "center": null,
+ "right": null
+ },
+ "10": {
+ "name": "ShieldsVent",
+ "position": {
+ "x": -9.5232,
+ "y": -14.337601
+ },
+ "left": 13,
+ "center": null,
+ "right": null
+ },
+ "11": {
+ "name": "UpperReactorVent",
+ "position": {
+ "x": 21.876,
+ "y": -3.0516002
+ },
+ "left": 4,
+ "center": null,
+ "right": null
+ },
+ "12": {
+ "name": "NavVentNorth",
+ "position": {
+ "x": -16.008001,
+ "y": -3.1680002
+ },
+ "left": null,
+ "center": null,
+ "right": 7
+ },
+ "13": {
+ "name": "NavVentSouth",
+ "position": {
+ "x": -16.008001,
+ "y": -6.3840003
+ },
+ "left": null,
+ "center": null,
+ "right": 10
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "0": {
+ "room": "Comms",
+ "position": {
+ "x": 24.067001,
+ "y": 11.974
+ }
+ },
+ "1": {
+ "room": "Comms",
+ "position": {
+ "x": 18.48,
+ "y": 13.298
+ }
+ },
+ "2": {
+ "room": "Kitchen",
+ "position": {
+ "x": -15.509,
+ "y": -5.913
+ }
+ },
+ "3": {
+ "room": "Laboratory",
+ "position": {
+ "x": -4.3,
+ "y": -7.759
+ }
+ },
+ "4": {
+ "room": "Lookout",
+ "position": {
+ "x": 11.063,
+ "y": 3.1330001
+ }
+ },
+ "5": {
+ "room": "MiningPit",
+ "position": {
+ "x": 12.733,
+ "y": 6.4160004
+ }
+ },
+ "6": {
+ "room": "Reactor",
+ "position": {
+ "x": 19.43,
+ "y": -6.59
+ }
+ },
+ "7": {
+ "room": "Storage",
+ "position": {
+ "x": -1.6159999,
+ "y": 4.6280003
+ }
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "initialSpawnCenter": {
+ "x": -9.81,
+ "y": 1
+ },
+ "meetingSpawnCenter": {
+ "x": -3,
+ "y": -2.1
+ },
+ "meetingSpawnCenter2": {
+ "x": 0,
+ "y": 0
+ },
+ "spawnRadius": 1.5
+}
\ No newline at end of file
--- /dev/null
+{
+ "Ventilation": "VentilationSystem",
+ "Comms": "HqHudSystemType",
+ "Reactor": "ReactorSystemType",
+ "Doors": "DoorsSystemType",
+ "MushroomMixupSabotage": "MushroomMixupSabotageSystem",
+ "Sabotage": "SabotageSystemType"
+}
\ No newline at end of file
--- /dev/null
+{
+ "0": {
+ "type": "NormalPlayerTask",
+ "taskType": "CollectSamples",
+ "length": "Common",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Laboratory",
+ "position": {
+ "x": -6.373,
+ "y": -8.884999
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "1": {
+ "type": "NormalPlayerTask",
+ "taskType": "EnterIdCode",
+ "length": "Common",
+ "consoles": [
+ {
+ "id": 1,
+ "room": "Lookout",
+ "position": {
+ "x": 8.446,
+ "y": 5.27
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "2": {
+ "type": "NormalPlayerTask",
+ "taskType": "ReplaceParts",
+ "length": "Common",
+ "consoles": []
+ },
+ "3": {
+ "type": "NormalPlayerTask",
+ "taskType": "RoastMarshmallow",
+ "length": "Common",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Beach",
+ "position": {
+ "x": -9.788,
+ "y": 1.641
+ },
+ "usableDistance": 1.35
+ },
+ {
+ "id": 1,
+ "room": "Beach",
+ "position": {
+ "x": -18.372,
+ "y": -3.849
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 2,
+ "room": "Beach",
+ "position": {
+ "x": -20.07,
+ "y": 3.303
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 3,
+ "room": "Beach",
+ "position": {
+ "x": -11.333,
+ "y": 7.898
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 4,
+ "room": "Beach",
+ "position": {
+ "x": -9.309,
+ "y": -3.507
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "4": {
+ "type": "NormalPlayerTask",
+ "taskType": "CatchFish",
+ "length": "Long",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "FishingDock",
+ "position": {
+ "x": -24.359001,
+ "y": -6.8320003
+ },
+ "usableDistance": 1.28
+ },
+ {
+ "id": 1,
+ "room": "Kitchen",
+ "position": {
+ "x": -12.645,
+ "y": -9.364001
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "5": {
+ "type": "NormalPlayerTask",
+ "taskType": "CollectVegetables",
+ "length": "Long",
+ "consoles": []
+ },
+ "6": {
+ "type": "NormalPlayerTask",
+ "taskType": "ExtractFuel",
+ "length": "Long",
+ "consoles": []
+ },
+ "7": {
+ "type": "NormalPlayerTask",
+ "taskType": "HelpCritter",
+ "length": "Long",
+ "consoles": []
+ },
+ "8": {
+ "type": "NormalPlayerTask",
+ "taskType": "HoistSupplies",
+ "length": "Long",
+ "consoles": []
+ },
+ "9": {
+ "type": "NormalPlayerTask",
+ "taskType": "PolishGem",
+ "length": "Long",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "MiningPit",
+ "position": {
+ "x": 14.353,
+ "y": 10.241
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "10": {
+ "type": "NormalPlayerTask",
+ "taskType": "MineOres",
+ "length": "Long",
+ "consoles": [
+ {
+ "id": 1,
+ "room": "MiningPit",
+ "position": {
+ "x": 11.076,
+ "y": 10.651
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "11": {
+ "type": "NormalPlayerTask",
+ "taskType": "ReplaceWaterJug",
+ "length": "Long",
+ "consoles": []
+ },
+ "12": {
+ "type": "NormalPlayerTask",
+ "taskType": "WaterPlants",
+ "length": "Long",
+ "consoles": []
+ },
+ "13": {
+ "type": "NormalPlayerTask",
+ "taskType": "AssembleArtifact",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 1,
+ "room": "Laboratory",
+ "position": {
+ "x": -6.2650003,
+ "y": -9.592999
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "14": {
+ "type": "NormalPlayerTask",
+ "taskType": "BuildSandcastle",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 1,
+ "room": "RecRoom",
+ "position": {
+ "x": -21.474998,
+ "y": 0.36600006
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "15": {
+ "type": "NormalPlayerTask",
+ "taskType": "CollectShells",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 2,
+ "room": "RecRoom",
+ "position": {
+ "x": -20.28,
+ "y": -2.4299998
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 0,
+ "room": "Beach",
+ "position": {
+ "x": 3.16,
+ "y": 1.51
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 1,
+ "room": "Beach",
+ "position": {
+ "x": -7.95,
+ "y": -1.9399999
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 3,
+ "room": "Beach",
+ "position": {
+ "x": -3.178,
+ "y": 8.14
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "16": {
+ "type": "NormalPlayerTask",
+ "taskType": "CrankGenerator",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 1,
+ "room": "Comms",
+ "position": {
+ "x": 20.751,
+ "y": 14.603
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 0,
+ "room": "Kitchen",
+ "position": {
+ "x": -12.999001,
+ "y": -6.3429995
+ },
+ "usableDistance": 1.25
+ }
+ ]
+ },
+ "17": {
+ "type": "NormalPlayerTask",
+ "taskType": "EmptyGarbage",
+ "length": "Short",
+ "consoles": []
+ },
+ "18": {
+ "type": "NormalPlayerTask",
+ "taskType": "EmptyGarbage",
+ "length": "Short",
+ "consoles": []
+ },
+ "19": {
+ "type": "NormalPlayerTask",
+ "taskType": "FixAntenna",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Comms",
+ "position": {
+ "x": 23.389,
+ "y": 14.826
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "20": {
+ "type": "NormalPlayerTask",
+ "taskType": "FixWiring",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 4,
+ "room": "Comms",
+ "position": {
+ "x": 19.373001,
+ "y": 14.288
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 2,
+ "room": "Dropship",
+ "position": {
+ "x": -11.108,
+ "y": 13.398
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "21": {
+ "type": "NormalPlayerTask",
+ "taskType": "LiftWeights",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 1,
+ "room": "RecRoom",
+ "position": {
+ "x": -19.151,
+ "y": 0.88100004
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "22": {
+ "type": "NormalPlayerTask",
+ "taskType": "MonitorMushroom",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Jungle",
+ "position": {
+ "x": 12.791,
+ "y": -15.567999
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "23": {
+ "type": "NormalPlayerTask",
+ "taskType": "PlayVideogame",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "SleepingQuarters",
+ "position": {
+ "x": 3.251,
+ "y": -1.0879999
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "24": {
+ "type": "NormalPlayerTask",
+ "taskType": "RecordTemperature",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Greenhouse",
+ "position": {
+ "x": 8.677,
+ "y": -11.279
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 1,
+ "room": "Laboratory",
+ "position": {
+ "x": -2.8840003,
+ "y": -7.8939996
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 0,
+ "room": "Reactor",
+ "position": {
+ "x": 23.401001,
+ "y": -6.928
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "25": {
+ "type": "NormalPlayerTask",
+ "taskType": "RecordTemperature",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Greenhouse",
+ "position": {
+ "x": 8.677,
+ "y": -11.279
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 1,
+ "room": "Laboratory",
+ "position": {
+ "x": -2.8840003,
+ "y": -7.8939996
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 0,
+ "room": "Reactor",
+ "position": {
+ "x": 23.401001,
+ "y": -6.928
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "26": {
+ "type": "NormalPlayerTask",
+ "taskType": "RecordTemperature",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Greenhouse",
+ "position": {
+ "x": 8.677,
+ "y": -11.279
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 1,
+ "room": "Laboratory",
+ "position": {
+ "x": -2.8840003,
+ "y": -7.8939996
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 0,
+ "room": "Reactor",
+ "position": {
+ "x": 23.401001,
+ "y": -6.928
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "27": {
+ "type": "NormalPlayerTask",
+ "taskType": "TestFrisbee",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 1,
+ "room": "RecRoom",
+ "position": {
+ "x": -18.647,
+ "y": -0.88699996
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "28": {
+ "type": "NormalPlayerTask",
+ "taskType": "TuneRadio",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Comms",
+ "position": {
+ "x": 19.62,
+ "y": 12.764
+ },
+ "usableDistance": 1
+ }
+ ]
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "0": {
+ "name": "CommunicationsVent",
+ "position": {
+ "x": 25.220001,
+ "y": 10.965
+ },
+ "left": 2,
+ "center": null,
+ "right": 5
+ },
+ "1": {
+ "name": "KitchenVent",
+ "position": {
+ "x": -15.359,
+ "y": -9.783001
+ },
+ "left": 6,
+ "center": null,
+ "right": null
+ },
+ "2": {
+ "name": "LookoutVent",
+ "position": {
+ "x": 9.366,
+ "y": 0.63
+ },
+ "left": 0,
+ "center": null,
+ "right": 5
+ },
+ "3": {
+ "name": "StorageVent",
+ "position": {
+ "x": 2.864,
+ "y": 0.9180002
+ },
+ "left": 9,
+ "center": null,
+ "right": 4
+ },
+ "4": {
+ "name": "NorthWestJungleVent",
+ "position": {
+ "x": -2.518,
+ "y": -8.986
+ },
+ "left": 8,
+ "center": null,
+ "right": 3
+ },
+ "5": {
+ "name": "NorthEastJungleVent",
+ "position": {
+ "x": 22.677,
+ "y": -8.497
+ },
+ "left": 2,
+ "center": null,
+ "right": 0
+ },
+ "6": {
+ "name": "SouthWestJungleVent",
+ "position": {
+ "x": 1.3000002,
+ "y": -10.515
+ },
+ "left": 1,
+ "center": null,
+ "right": 7
+ },
+ "7": {
+ "name": "SouthEastJungleVent",
+ "position": {
+ "x": 15.150001,
+ "y": -16.42
+ },
+ "left": 6,
+ "center": null,
+ "right": null
+ },
+ "8": {
+ "name": "RecRoomVent",
+ "position": {
+ "x": -16.9,
+ "y": -2.571
+ },
+ "left": 9,
+ "center": null,
+ "right": 4
+ },
+ "9": {
+ "name": "MeetingRoomVent",
+ "position": {
+ "x": -12.233,
+ "y": 8.061
+ },
+ "left": 8,
+ "center": null,
+ "right": 3
+ }
+}
\ No newline at end of file
--- /dev/null
+{}
\ No newline at end of file
--- /dev/null
+{
+ "initialSpawnCenter": {
+ "x": -4.4,
+ "y": 2.2
+ },
+ "meetingSpawnCenter": {
+ "x": 24.043,
+ "y": 1.72
+ },
+ "meetingSpawnCenter2": {
+ "x": 0,
+ "y": 0
+ },
+ "spawnRadius": 1.55
+}
\ No newline at end of file
--- /dev/null
+{
+ "Electrical": "SwitchSystem",
+ "MedBay": "MedScanSystem",
+ "Comms": "HqHudSystemType",
+ "Reactor": "ReactorSystemType",
+ "LifeSupp": "LifeSuppSystemType",
+ "Ventilation": "VentilationSystem",
+ "Sabotage": "SabotageSystemType"
+}
\ No newline at end of file
--- /dev/null
+{
+ "0": {
+ "type": "NormalPlayerTask",
+ "taskType": "FixWiring",
+ "length": "Common",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Storage",
+ "position": {
+ "x": 18.39,
+ "y": 1.2
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 1,
+ "room": "Hallway",
+ "position": {
+ "x": 12.096,
+ "y": 8.04
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 4,
+ "room": "Laboratory",
+ "position": {
+ "x": 6.125,
+ "y": 14.958
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 2,
+ "room": "LockerRoom",
+ "position": {
+ "x": 4.3559995,
+ "y": 2.5340002
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 3,
+ "room": "Greenhouse",
+ "position": {
+ "x": 16.980001,
+ "y": 21.394
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "1": {
+ "type": "NormalPlayerTask",
+ "taskType": "EnterIdCode",
+ "length": "Common",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Admin",
+ "position": {
+ "x": 19.894001,
+ "y": 19.024
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "2": {
+ "type": "NormalPlayerTask",
+ "taskType": "SubmitScan",
+ "length": "Long",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "MedBay",
+ "position": {
+ "x": 16.233,
+ "y": 0.262
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "3": {
+ "type": "NormalPlayerTask",
+ "taskType": "ClearAsteroids",
+ "length": "Long",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Weapons",
+ "position": {
+ "x": 19.213,
+ "y": -2.414
+ },
+ "usableDistance": 1.8
+ }
+ ]
+ },
+ "4": {
+ "type": "DivertPowerTask",
+ "taskType": "DivertPower",
+ "length": "Long",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Reactor",
+ "position": {
+ "x": 0.77700007,
+ "y": 11.484
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "5": {
+ "type": "DivertPowerTask",
+ "taskType": "DivertPower",
+ "length": "Long",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Reactor",
+ "position": {
+ "x": 0.77700007,
+ "y": 11.484
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "6": {
+ "type": "DivertPowerTask",
+ "taskType": "DivertPower",
+ "length": "Long",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Reactor",
+ "position": {
+ "x": 0.77700007,
+ "y": 11.484
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "7": {
+ "type": "DivertPowerTask",
+ "taskType": "DivertPower",
+ "length": "Long",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Reactor",
+ "position": {
+ "x": 0.77700007,
+ "y": 11.484
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "8": {
+ "type": "DivertPowerTask",
+ "taskType": "DivertPower",
+ "length": "Long",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Reactor",
+ "position": {
+ "x": 0.77700007,
+ "y": 11.484
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "9": {
+ "type": "DivertPowerTask",
+ "taskType": "DivertPower",
+ "length": "Long",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Reactor",
+ "position": {
+ "x": 0.77700007,
+ "y": 11.484
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "10": {
+ "type": "NormalPlayerTask",
+ "taskType": "WaterPlants",
+ "length": "Long",
+ "consoles": []
+ },
+ "11": {
+ "type": "NormalPlayerTask",
+ "taskType": "StartReactor",
+ "length": "Long",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Reactor",
+ "position": {
+ "x": 2.549,
+ "y": 12.407001
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "12": {
+ "type": "DivertPowerTask",
+ "taskType": "DivertPower",
+ "length": "Long",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Reactor",
+ "position": {
+ "x": 0.77700007,
+ "y": 11.484
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "13": {
+ "type": "NormalPlayerTask",
+ "taskType": "ChartCourse",
+ "length": "Short",
+ "consoles": []
+ },
+ "14": {
+ "type": "NormalPlayerTask",
+ "taskType": "CleanO2Filter",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Greenhouse",
+ "position": {
+ "x": 17.221,
+ "y": 24.505001
+ },
+ "usableDistance": 2
+ }
+ ]
+ },
+ "15": {
+ "type": "NormalPlayerTask",
+ "taskType": "FuelEngines",
+ "length": "Short",
+ "consoles": []
+ },
+ "16": {
+ "type": "NormalPlayerTask",
+ "taskType": "AssembleArtifact",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 1,
+ "room": "Laboratory",
+ "position": {
+ "x": 9.402,
+ "y": 14.568001
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "17": {
+ "type": "NormalPlayerTask",
+ "taskType": "SortSamples",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Laboratory",
+ "position": {
+ "x": 9.660001,
+ "y": 11.115001
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "18": {
+ "type": "NormalPlayerTask",
+ "taskType": "PrimeShields",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Admin",
+ "position": {
+ "x": 21.169,
+ "y": 17.945
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "19": {
+ "type": "NormalPlayerTask",
+ "taskType": "EmptyGarbage",
+ "length": "Short",
+ "consoles": []
+ },
+ "20": {
+ "type": "NormalPlayerTask",
+ "taskType": "MeasureWeather",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Balcony",
+ "position": {
+ "x": 28.911999,
+ "y": -1.701
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "21": {
+ "type": "DivertPowerTask",
+ "taskType": "DivertPower",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Reactor",
+ "position": {
+ "x": 0.77700007,
+ "y": 11.484
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "22": {
+ "type": "NormalPlayerTask",
+ "taskType": "BuyBeverage",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 2,
+ "room": "Cafeteria",
+ "position": {
+ "x": 27.49,
+ "y": 5.665
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "23": {
+ "type": "NormalPlayerTask",
+ "taskType": "ProcessData",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 2,
+ "room": "Office",
+ "position": {
+ "x": 15.776001,
+ "y": 21.403
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "24": {
+ "type": "NormalPlayerTask",
+ "taskType": "RunDiagnostics",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Launchpad",
+ "position": {
+ "x": -2.499,
+ "y": 1.8730001
+ },
+ "usableDistance": 1.5
+ }
+ ]
+ },
+ "25": {
+ "type": "NormalPlayerTask",
+ "taskType": "UnlockManifolds",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 2,
+ "room": "Reactor",
+ "position": {
+ "x": 0.44200015,
+ "y": 13.2560005
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "26": {
+ "type": "NormalPlayerTask",
+ "taskType": "VentCleaning",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 11,
+ "room": "Launchpad",
+ "position": {
+ "x": -6.1800003,
+ "y": 3.5600002
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 1,
+ "room": "Balcony",
+ "position": {
+ "x": 23.769999,
+ "y": -1.9399999
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 2,
+ "room": "Hallway",
+ "position": {
+ "x": 23.9,
+ "y": 7.1800003
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 3,
+ "room": "Reactor",
+ "position": {
+ "x": 0.48000014,
+ "y": 10.6970005
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 4,
+ "room": "Laboratory",
+ "position": {
+ "x": 11.606001,
+ "y": 13.816
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 10,
+ "room": "LockerRoom",
+ "position": {
+ "x": 4.29,
+ "y": 0.52999973
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 6,
+ "room": "Admin",
+ "position": {
+ "x": 22.390001,
+ "y": 17.23
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 5,
+ "room": "Office",
+ "position": {
+ "x": 13.280001,
+ "y": 20.13
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 7,
+ "room": "Greenhouse",
+ "position": {
+ "x": 17.85,
+ "y": 25.23
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 8,
+ "room": "MedBay",
+ "position": {
+ "x": 15.41,
+ "y": -1.8199997
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 9,
+ "room": "Decontamination",
+ "position": {
+ "x": 6.83,
+ "y": 3.145
+ },
+ "usableDistance": 1
+ }
+ ]
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "1": {
+ "name": "BalconyVent",
+ "position": {
+ "x": 23.769999,
+ "y": -1.9399999
+ },
+ "left": 8,
+ "center": null,
+ "right": 2
+ },
+ "2": {
+ "name": "YHallRightVent",
+ "position": {
+ "x": 23.9,
+ "y": 7.1800003
+ },
+ "left": 6,
+ "center": null,
+ "right": 1
+ },
+ "3": {
+ "name": "ReactorVent",
+ "position": {
+ "x": 0.48000014,
+ "y": 10.6970005
+ },
+ "left": 4,
+ "center": 9,
+ "right": 11
+ },
+ "4": {
+ "name": "LabVent",
+ "position": {
+ "x": 11.606001,
+ "y": 13.816
+ },
+ "left": 3,
+ "center": 9,
+ "right": 5
+ },
+ "5": {
+ "name": "OfficeVent",
+ "position": {
+ "x": 13.280001,
+ "y": 20.13
+ },
+ "left": 4,
+ "center": 6,
+ "right": 7
+ },
+ "6": {
+ "name": "AdminVent",
+ "position": {
+ "x": 22.390001,
+ "y": 17.23
+ },
+ "left": 7,
+ "center": 2,
+ "right": 5
+ },
+ "7": {
+ "name": "AgriVent",
+ "position": {
+ "x": 17.85,
+ "y": 25.23
+ },
+ "left": 6,
+ "center": null,
+ "right": 5
+ },
+ "8": {
+ "name": "MedVent",
+ "position": {
+ "x": 15.41,
+ "y": -1.8199997
+ },
+ "left": 1,
+ "center": null,
+ "right": 10
+ },
+ "9": {
+ "name": "DeconVent",
+ "position": {
+ "x": 6.83,
+ "y": 3.145
+ },
+ "left": 3,
+ "center": 10,
+ "right": 4
+ },
+ "10": {
+ "name": "LockerVent",
+ "position": {
+ "x": 4.29,
+ "y": 0.52999973
+ },
+ "left": 8,
+ "center": 11,
+ "right": 9
+ },
+ "11": {
+ "name": "LaunchVent",
+ "position": {
+ "x": -6.1800003,
+ "y": 3.5600002
+ },
+ "left": 3,
+ "center": null,
+ "right": 10
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "0": {
+ "room": "Electrical",
+ "position": {
+ "x": 11.255,
+ "y": -9.4473
+ }
+ },
+ "1": {
+ "room": "Electrical",
+ "position": {
+ "x": 7.4827003,
+ "y": -10.922001
+ }
+ },
+ "2": {
+ "room": "Electrical",
+ "position": {
+ "x": 5.4228,
+ "y": -13.496
+ }
+ },
+ "3": {
+ "room": "LifeSupp",
+ "position": {
+ "x": 5.492,
+ "y": -18.301
+ }
+ },
+ "4": {
+ "room": "LifeSupp",
+ "position": {
+ "x": 5.9068003,
+ "y": -22.348
+ }
+ },
+ "5": {
+ "room": "Weapons",
+ "position": {
+ "x": 13.0322,
+ "y": -20.701
+ }
+ },
+ "6": {
+ "room": "Comms",
+ "position": {
+ "x": 10.8987,
+ "y": -19.159
+ }
+ },
+ "7": {
+ "room": "Office",
+ "position": {
+ "x": 28.757002,
+ "y": -17.0636
+ }
+ },
+ "8": {
+ "room": "Office",
+ "position": {
+ "x": 17.417002,
+ "y": -21.7231
+ }
+ },
+ "9": {
+ "room": "Laboratory",
+ "position": {
+ "x": 26.608002,
+ "y": -8.808
+ }
+ },
+ "10": {
+ "room": "Laboratory",
+ "position": {
+ "x": 24.780003,
+ "y": -9.5651
+ }
+ },
+ "11": {
+ "room": "Storage",
+ "position": {
+ "x": 17.293001,
+ "y": -10.882
+ }
+ },
+ "12": {
+ "room": "Decontamination",
+ "position": {
+ "x": 25.512001,
+ "y": -24.559002
+ }
+ },
+ "13": {
+ "room": "Decontamination",
+ "position": {
+ "x": 23.897001,
+ "y": -23.512001
+ }
+ },
+ "14": {
+ "room": "Decontamination",
+ "position": {
+ "x": 37.992004,
+ "y": -9.6214
+ }
+ },
+ "15": {
+ "room": "Decontamination",
+ "position": {
+ "x": 39.067,
+ "y": -11.361
+ }
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "initialSpawnCenter": {
+ "x": 16.64,
+ "y": -2.46
+ },
+ "meetingSpawnCenter": {
+ "x": 17.4,
+ "y": -16.286
+ },
+ "meetingSpawnCenter2": {
+ "x": 17.4,
+ "y": -17.515
+ },
+ "spawnRadius": 1
+}
\ No newline at end of file
--- /dev/null
+{
+ "Electrical": "SwitchSystem",
+ "MedBay": "MedScanSystem",
+ "Doors": "DoorsSystemType",
+ "Comms": "HudOverrideSystemType",
+ "Security": "SecurityCameraSystemType",
+ "Ventilation": "VentilationSystem",
+ "Laboratory": "ReactorSystemType",
+ "Sabotage": "SabotageSystemType"
+}
\ No newline at end of file
--- /dev/null
+{
+ "0": {
+ "type": "NormalPlayerTask",
+ "taskType": "SwipeCard",
+ "length": "Common",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Office",
+ "position": {
+ "x": 24.816444,
+ "y": -16.217522
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "1": {
+ "type": "NormalPlayerTask",
+ "taskType": "InsertKeys",
+ "length": "Common",
+ "consoles": [
+ {
+ "id": 2,
+ "room": "Dropship",
+ "position": {
+ "x": 17.38076,
+ "y": 0.08402014
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "2": {
+ "type": "NormalPlayerTask",
+ "taskType": "ScanBoardingPass",
+ "length": "Common",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Office",
+ "position": {
+ "x": 25.75001,
+ "y": -16.03081
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "3": {
+ "type": "NormalPlayerTask",
+ "taskType": "FixWiring",
+ "length": "Common",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Electrical",
+ "position": {
+ "x": 3.0672798,
+ "y": -8.691476
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 1,
+ "room": "LifeSupp",
+ "position": {
+ "x": 6.499,
+ "y": -18.458
+ },
+ "usableDistance": 0.77
+ },
+ {
+ "id": 2,
+ "room": "Office",
+ "position": {
+ "x": 16.373749,
+ "y": -18.505589
+ },
+ "usableDistance": 0.8
+ },
+ {
+ "id": 3,
+ "room": "Decontamination",
+ "position": {
+ "x": 40.61,
+ "y": -8.96
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 4,
+ "room": "Laboratory",
+ "position": {
+ "x": 37.321003,
+ "y": -8.944
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 5,
+ "room": "Laboratory",
+ "position": {
+ "x": 32.975002,
+ "y": -9.031365
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "4": {
+ "type": "UploadDataTask",
+ "taskType": "UploadData",
+ "length": "Long",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Comms",
+ "position": {
+ "x": 11.71978,
+ "y": -15.145192
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "5": {
+ "type": "UploadDataTask",
+ "taskType": "UploadData",
+ "length": "Long",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Comms",
+ "position": {
+ "x": 11.71978,
+ "y": -15.145192
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "6": {
+ "type": "UploadDataTask",
+ "taskType": "UploadData",
+ "length": "Long",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Comms",
+ "position": {
+ "x": 11.71978,
+ "y": -15.145192
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "7": {
+ "type": "UploadDataTask",
+ "taskType": "UploadData",
+ "length": "Long",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Comms",
+ "position": {
+ "x": 11.71978,
+ "y": -15.145192
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "8": {
+ "type": "UploadDataTask",
+ "taskType": "UploadData",
+ "length": "Long",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Comms",
+ "position": {
+ "x": 11.71978,
+ "y": -15.145192
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "9": {
+ "type": "NormalPlayerTask",
+ "taskType": "StartReactor",
+ "length": "Long",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Specimens",
+ "position": {
+ "x": 34.757774,
+ "y": -18.878536
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "10": {
+ "type": "NormalPlayerTask",
+ "taskType": "FuelEngines",
+ "length": "Long",
+ "consoles": []
+ },
+ "11": {
+ "type": "WaterWayTask",
+ "taskType": "OpenWaterways",
+ "length": "Long",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "BoilerRoom",
+ "position": {
+ "x": 3.669,
+ "y": -24.15
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 1,
+ "room": "BoilerRoom",
+ "position": {
+ "x": 0.9430001,
+ "y": -24.15
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 2,
+ "room": "BoilerRoom",
+ "position": {
+ "x": 18.417002,
+ "y": -23.72
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "12": {
+ "type": "NormalPlayerTask",
+ "taskType": "InspectSample",
+ "length": "Long",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Hallway",
+ "position": {
+ "x": 36.52848,
+ "y": -5.5693474
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "13": {
+ "type": "NormalPlayerTask",
+ "taskType": "ReplaceWaterJug",
+ "length": "Long",
+ "consoles": []
+ },
+ "14": {
+ "type": "WeatherNodeTask",
+ "taskType": "FixWeatherNode",
+ "length": "Long",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Hallway",
+ "position": {
+ "x": 23.04,
+ "y": -6.94
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 1,
+ "room": "Hallway",
+ "position": {
+ "x": 8.37,
+ "y": -15.46
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 2,
+ "room": "Hallway",
+ "position": {
+ "x": 7.16,
+ "y": -25.36
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 3,
+ "room": "Hallway",
+ "position": {
+ "x": 14.96,
+ "y": -25.44
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 4,
+ "room": "Hallway",
+ "position": {
+ "x": 14.48,
+ "y": -12.17
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 5,
+ "room": "Hallway",
+ "position": {
+ "x": 30.86,
+ "y": -12.23
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "15": {
+ "type": "WeatherNodeTask",
+ "taskType": "FixWeatherNode",
+ "length": "Long",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Hallway",
+ "position": {
+ "x": 23.04,
+ "y": -6.94
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 1,
+ "room": "Hallway",
+ "position": {
+ "x": 8.37,
+ "y": -15.46
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 2,
+ "room": "Hallway",
+ "position": {
+ "x": 7.16,
+ "y": -25.36
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 3,
+ "room": "Hallway",
+ "position": {
+ "x": 14.96,
+ "y": -25.44
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 4,
+ "room": "Hallway",
+ "position": {
+ "x": 14.48,
+ "y": -12.17
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 5,
+ "room": "Hallway",
+ "position": {
+ "x": 30.86,
+ "y": -12.23
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "16": {
+ "type": "WeatherNodeTask",
+ "taskType": "FixWeatherNode",
+ "length": "Long",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Hallway",
+ "position": {
+ "x": 23.04,
+ "y": -6.94
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 1,
+ "room": "Hallway",
+ "position": {
+ "x": 8.37,
+ "y": -15.46
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 2,
+ "room": "Hallway",
+ "position": {
+ "x": 7.16,
+ "y": -25.36
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 3,
+ "room": "Hallway",
+ "position": {
+ "x": 14.96,
+ "y": -25.44
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 4,
+ "room": "Hallway",
+ "position": {
+ "x": 14.48,
+ "y": -12.17
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 5,
+ "room": "Hallway",
+ "position": {
+ "x": 30.86,
+ "y": -12.23
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "17": {
+ "type": "WeatherNodeTask",
+ "taskType": "FixWeatherNode",
+ "length": "Long",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Hallway",
+ "position": {
+ "x": 23.04,
+ "y": -6.94
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 1,
+ "room": "Hallway",
+ "position": {
+ "x": 8.37,
+ "y": -15.46
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 2,
+ "room": "Hallway",
+ "position": {
+ "x": 7.16,
+ "y": -25.36
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 3,
+ "room": "Hallway",
+ "position": {
+ "x": 14.96,
+ "y": -25.44
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 4,
+ "room": "Hallway",
+ "position": {
+ "x": 14.48,
+ "y": -12.17
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 5,
+ "room": "Hallway",
+ "position": {
+ "x": 30.86,
+ "y": -12.23
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "18": {
+ "type": "NormalPlayerTask",
+ "taskType": "RebootWifi",
+ "length": "Long",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Comms",
+ "position": {
+ "x": 11.047999,
+ "y": -15.297912
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "19": {
+ "type": "NormalPlayerTask",
+ "taskType": "MonitorOxygen",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Hallway",
+ "position": {
+ "x": 1.654,
+ "y": -16.012001
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "20": {
+ "type": "NormalPlayerTask",
+ "taskType": "UnlockManifolds",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Specimens",
+ "position": {
+ "x": 34.381306,
+ "y": -19.486675
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "21": {
+ "type": "NormalPlayerTask",
+ "taskType": "StoreArtifacts",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Specimens",
+ "position": {
+ "x": 36.481117,
+ "y": -18.82867
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "22": {
+ "type": "NormalPlayerTask",
+ "taskType": "FillCanisters",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "LifeSupp",
+ "position": {
+ "x": 1.1431961,
+ "y": -19.525873
+ },
+ "usableDistance": 0.6
+ }
+ ]
+ },
+ "23": {
+ "type": "NormalPlayerTask",
+ "taskType": "EmptyGarbage",
+ "length": "Short",
+ "consoles": []
+ },
+ "24": {
+ "type": "NormalPlayerTask",
+ "taskType": "ChartCourse",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 2,
+ "room": "Dropship",
+ "position": {
+ "x": 15.974811,
+ "y": 0.08402014
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "25": {
+ "type": "NormalPlayerTask",
+ "taskType": "SubmitScan",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "MedBay",
+ "position": {
+ "x": 40.327003,
+ "y": -7.082
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "26": {
+ "type": "NormalPlayerTask",
+ "taskType": "ClearAsteroids",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Weapons",
+ "position": {
+ "x": 9.929073,
+ "y": -22.390993
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "27": {
+ "type": "WeatherNodeTask",
+ "taskType": "FixWeatherNode",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Hallway",
+ "position": {
+ "x": 23.04,
+ "y": -6.94
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 1,
+ "room": "Hallway",
+ "position": {
+ "x": 8.37,
+ "y": -15.46
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 2,
+ "room": "Hallway",
+ "position": {
+ "x": 7.16,
+ "y": -25.36
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 3,
+ "room": "Hallway",
+ "position": {
+ "x": 14.96,
+ "y": -25.44
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 4,
+ "room": "Hallway",
+ "position": {
+ "x": 14.48,
+ "y": -12.17
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 5,
+ "room": "Hallway",
+ "position": {
+ "x": 30.86,
+ "y": -12.23
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "28": {
+ "type": "WeatherNodeTask",
+ "taskType": "FixWeatherNode",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Hallway",
+ "position": {
+ "x": 23.04,
+ "y": -6.94
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 1,
+ "room": "Hallway",
+ "position": {
+ "x": 8.37,
+ "y": -15.46
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 2,
+ "room": "Hallway",
+ "position": {
+ "x": 7.16,
+ "y": -25.36
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 3,
+ "room": "Hallway",
+ "position": {
+ "x": 14.96,
+ "y": -25.44
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 4,
+ "room": "Hallway",
+ "position": {
+ "x": 14.48,
+ "y": -12.17
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 5,
+ "room": "Hallway",
+ "position": {
+ "x": 30.86,
+ "y": -12.23
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "29": {
+ "type": "NormalPlayerTask",
+ "taskType": "AlignTelescope",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Laboratory",
+ "position": {
+ "x": 33.868427,
+ "y": -5.4712653
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "30": {
+ "type": "NormalPlayerTask",
+ "taskType": "RepairDrill",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Laboratory",
+ "position": {
+ "x": 27.42095,
+ "y": -6.982279
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "31": {
+ "type": "NormalPlayerTask",
+ "taskType": "RecordTemperature",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Laboratory",
+ "position": {
+ "x": 31.34464,
+ "y": -6.67142
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 0,
+ "room": "Outside",
+ "position": {
+ "x": 30.93255,
+ "y": -15.324791
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "32": {
+ "type": "NormalPlayerTask",
+ "taskType": "RecordTemperature",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Laboratory",
+ "position": {
+ "x": 31.34464,
+ "y": -6.67142
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 0,
+ "room": "Outside",
+ "position": {
+ "x": 30.93255,
+ "y": -15.324791
+ },
+ "usableDistance": 1
+ }
+ ]
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "0": {
+ "name": "ElectricalVent",
+ "position": {
+ "x": 1.9289999,
+ "y": -9.558001
+ },
+ "left": 2,
+ "center": null,
+ "right": 1
+ },
+ "1": {
+ "name": "ElecFenceVent",
+ "position": {
+ "x": 6.9,
+ "y": -14.41
+ },
+ "left": 2,
+ "center": null,
+ "right": 0
+ },
+ "2": {
+ "name": "LifeSuppVent",
+ "position": {
+ "x": 3.51,
+ "y": -16.58
+ },
+ "left": 1,
+ "center": null,
+ "right": 0
+ },
+ "3": {
+ "name": "CommsVent",
+ "position": {
+ "x": 12.304,
+ "y": -18.897999
+ },
+ "left": 8,
+ "center": null,
+ "right": 4
+ },
+ "4": {
+ "name": "OfficeVent",
+ "position": {
+ "x": 16.379,
+ "y": -19.599
+ },
+ "left": 3,
+ "center": null,
+ "right": 8
+ },
+ "5": {
+ "name": "AdminVent",
+ "position": {
+ "x": 20.089003,
+ "y": -25.517
+ },
+ "left": 11,
+ "center": null,
+ "right": 7
+ },
+ "6": {
+ "name": "BathroomVent",
+ "position": {
+ "x": 32.963,
+ "y": -9.526
+ },
+ "left": null,
+ "center": null,
+ "right": 7
+ },
+ "7": {
+ "name": "SubBathroomVent",
+ "position": {
+ "x": 30.907003,
+ "y": -11.860001
+ },
+ "left": 6,
+ "center": null,
+ "right": 5
+ },
+ "8": {
+ "name": "StorageVent",
+ "position": {
+ "x": 22,
+ "y": -12.190001
+ },
+ "left": 3,
+ "center": null,
+ "right": 4
+ },
+ "9": {
+ "name": "ScienceBuildingVent",
+ "position": {
+ "x": 23.72,
+ "y": -7.82
+ },
+ "left": 10,
+ "center": null,
+ "right": null
+ },
+ "10": {
+ "name": "ElectricBuildingVent",
+ "position": {
+ "x": 9.64,
+ "y": -7.72
+ },
+ "left": 9,
+ "center": null,
+ "right": null
+ },
+ "11": {
+ "name": "SouthVent",
+ "position": {
+ "x": 18.93,
+ "y": -24.85
+ },
+ "left": null,
+ "center": null,
+ "right": 5
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "0": {
+ "room": "Cafeteria",
+ "position": {
+ "x": -6.3936,
+ "y": 1.33848
+ }
+ },
+ "1": {
+ "room": "Storage",
+ "position": {
+ "x": -5.268,
+ "y": -14.2884
+ }
+ },
+ "2": {
+ "room": "UpperEngine",
+ "position": {
+ "x": -16.930801,
+ "y": -2.1276002
+ }
+ },
+ "3": {
+ "room": "Cafeteria",
+ "position": {
+ "x": -0.708,
+ "y": -4.992
+ }
+ },
+ "4": {
+ "room": "LowerEngine",
+ "position": {
+ "x": -14.6808,
+ "y": -11.472
+ }
+ },
+ "5": {
+ "room": "UpperEngine",
+ "position": {
+ "x": -14.676002,
+ "y": 1.3406401
+ }
+ },
+ "6": {
+ "room": "Security",
+ "position": {
+ "x": -14.734801,
+ "y": -5.1417603
+ }
+ },
+ "7": {
+ "room": "Storage",
+ "position": {
+ "x": 1.1316001,
+ "y": -11.98128
+ }
+ },
+ "8": {
+ "room": "Cafeteria",
+ "position": {
+ "x": 5.1432004,
+ "y": 1.3355999
+ }
+ },
+ "9": {
+ "room": "Electrical",
+ "position": {
+ "x": -9.53616,
+ "y": -13.416001
+ }
+ },
+ "10": {
+ "room": "MedBay",
+ "position": {
+ "x": -9.1452,
+ "y": -0.4439999
+ }
+ },
+ "11": {
+ "room": "LowerEngine",
+ "position": {
+ "x": -16.930801,
+ "y": -8.9664
+ }
+ },
+ "12": {
+ "room": "Storage",
+ "position": {
+ "x": -0.70919997,
+ "y": -8.560801
+ }
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "initialSpawnCenter": {
+ "x": -0.72,
+ "y": 0.62
+ },
+ "meetingSpawnCenter": {
+ "x": -0.72,
+ "y": 0.62
+ },
+ "meetingSpawnCenter2": {
+ "x": 0,
+ "y": 0
+ },
+ "spawnRadius": 1.6
+}
\ No newline at end of file
--- /dev/null
+{
+ "Electrical": "SwitchSystem",
+ "MedBay": "MedScanSystem",
+ "Doors": "AutoDoorsSystemType",
+ "Comms": "HudOverrideSystemType",
+ "Security": "SecurityCameraSystemType",
+ "Reactor": "ReactorSystemType",
+ "LifeSupp": "LifeSuppSystemType",
+ "Ventilation": "VentilationSystem",
+ "Sabotage": "SabotageSystemType"
+}
\ No newline at end of file
--- /dev/null
+{
+ "0": {
+ "type": "NormalPlayerTask",
+ "taskType": "SwipeCard",
+ "length": "Common",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Admin",
+ "position": {
+ "x": 5.6352005,
+ "y": -8.632801
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "1": {
+ "type": "NormalPlayerTask",
+ "taskType": "FixWiring",
+ "length": "Common",
+ "consoles": [
+ {
+ "id": 2,
+ "room": "Admin",
+ "position": {
+ "x": 1.392,
+ "y": -6.4092
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 4,
+ "room": "Cafeteria",
+ "position": {
+ "x": -5.2811995,
+ "y": 5.2464
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 3,
+ "room": "Nav",
+ "position": {
+ "x": 14.5199995,
+ "y": -3.7740002
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 0,
+ "room": "Electrical",
+ "position": {
+ "x": -7.7279997,
+ "y": -7.6668
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 1,
+ "room": "Storage",
+ "position": {
+ "x": -1.932,
+ "y": -8.7204
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 5,
+ "room": "Security",
+ "position": {
+ "x": -15.5592,
+ "y": -4.5923996
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "2": {
+ "type": "NormalPlayerTask",
+ "taskType": "ClearAsteroids",
+ "length": "Long",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Weapons",
+ "position": {
+ "x": 9.087601,
+ "y": 1.812
+ },
+ "usableDistance": 1.2
+ }
+ ]
+ },
+ "3": {
+ "type": "NormalPlayerTask",
+ "taskType": "AlignEngineOutput",
+ "length": "Long",
+ "consoles": [
+ {
+ "id": 1,
+ "room": "LowerEngine",
+ "position": {
+ "x": -19.150799,
+ "y": -12.618
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 0,
+ "room": "UpperEngine",
+ "position": {
+ "x": -19.176,
+ "y": -0.41442212
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "4": {
+ "type": "NormalPlayerTask",
+ "taskType": "SubmitScan",
+ "length": "Long",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "MedBay",
+ "position": {
+ "x": -7.3284,
+ "y": -5.2476006
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "5": {
+ "type": "NormalPlayerTask",
+ "taskType": "InspectSample",
+ "length": "Long",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "MedBay",
+ "position": {
+ "x": -6.144,
+ "y": -4.2599998
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "6": {
+ "type": "NormalPlayerTask",
+ "taskType": "FuelEngines",
+ "length": "Long",
+ "consoles": []
+ },
+ "7": {
+ "type": "NormalPlayerTask",
+ "taskType": "StartReactor",
+ "length": "Long",
+ "consoles": [
+ {
+ "id": 2,
+ "room": "Reactor",
+ "position": {
+ "x": -21.792,
+ "y": -5.5728
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "8": {
+ "type": "NormalPlayerTask",
+ "taskType": "EmptyChute",
+ "length": "Long",
+ "consoles": []
+ },
+ "9": {
+ "type": "NormalPlayerTask",
+ "taskType": "EmptyGarbage",
+ "length": "Long",
+ "consoles": []
+ },
+ "10": {
+ "type": "UploadDataTask",
+ "taskType": "UploadData",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Admin",
+ "position": {
+ "x": 2.5079997,
+ "y": -6.2652006
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "11": {
+ "type": "NormalPlayerTask",
+ "taskType": "CalibrateDistributor",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Electrical",
+ "position": {
+ "x": -5.8644004,
+ "y": -7.4772
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "12": {
+ "type": "NormalPlayerTask",
+ "taskType": "ChartCourse",
+ "length": "Short",
+ "consoles": []
+ },
+ "13": {
+ "type": "NormalPlayerTask",
+ "taskType": "CleanO2Filter",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "LifeSupp",
+ "position": {
+ "x": 5.7432,
+ "y": -2.9772
+ },
+ "usableDistance": 0.8
+ }
+ ]
+ },
+ "14": {
+ "type": "NormalPlayerTask",
+ "taskType": "UnlockManifolds",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 2,
+ "room": "Reactor",
+ "position": {
+ "x": -22.536001,
+ "y": -2.4996
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "15": {
+ "type": "UploadDataTask",
+ "taskType": "UploadData",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Admin",
+ "position": {
+ "x": 2.5079997,
+ "y": -6.2652006
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "16": {
+ "type": "NormalPlayerTask",
+ "taskType": "StabilizeSteering",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Nav",
+ "position": {
+ "x": 18.732,
+ "y": -4.728
+ },
+ "usableDistance": 1.25
+ }
+ ]
+ },
+ "17": {
+ "type": "UploadDataTask",
+ "taskType": "UploadData",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Admin",
+ "position": {
+ "x": 2.5079997,
+ "y": -6.2652006
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "18": {
+ "type": "NormalPlayerTask",
+ "taskType": "PrimeShields",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Shields",
+ "position": {
+ "x": 7.526399,
+ "y": -13.981199
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "19": {
+ "type": "UploadDataTask",
+ "taskType": "UploadData",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Admin",
+ "position": {
+ "x": 2.5079997,
+ "y": -6.2652006
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "20": {
+ "type": "UploadDataTask",
+ "taskType": "UploadData",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Admin",
+ "position": {
+ "x": 2.5079997,
+ "y": -6.2652006
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "21": {
+ "type": "DivertPowerTask",
+ "taskType": "DivertPower",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Electrical",
+ "position": {
+ "x": -9,
+ "y": -7.2936006
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "22": {
+ "type": "DivertPowerTask",
+ "taskType": "DivertPower",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Electrical",
+ "position": {
+ "x": -9,
+ "y": -7.2936006
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "23": {
+ "type": "DivertPowerTask",
+ "taskType": "DivertPower",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Electrical",
+ "position": {
+ "x": -9,
+ "y": -7.2936006
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "24": {
+ "type": "DivertPowerTask",
+ "taskType": "DivertPower",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Electrical",
+ "position": {
+ "x": -9,
+ "y": -7.2936006
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "25": {
+ "type": "DivertPowerTask",
+ "taskType": "DivertPower",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Electrical",
+ "position": {
+ "x": -9,
+ "y": -7.2936006
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "26": {
+ "type": "DivertPowerTask",
+ "taskType": "DivertPower",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Electrical",
+ "position": {
+ "x": -9,
+ "y": -7.2936006
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "27": {
+ "type": "DivertPowerTask",
+ "taskType": "DivertPower",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Electrical",
+ "position": {
+ "x": -9,
+ "y": -7.2936006
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "28": {
+ "type": "DivertPowerTask",
+ "taskType": "DivertPower",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Electrical",
+ "position": {
+ "x": -9,
+ "y": -7.2936006
+ },
+ "usableDistance": 1
+ }
+ ]
+ },
+ "29": {
+ "type": "NormalPlayerTask",
+ "taskType": "VentCleaning",
+ "length": "Short",
+ "consoles": [
+ {
+ "id": 0,
+ "room": "Admin",
+ "position": {
+ "x": 2.544,
+ "y": -9.955201
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 2,
+ "room": "Cafeteria",
+ "position": {
+ "x": 4.2588,
+ "y": -0.27600002
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 13,
+ "room": "Nav",
+ "position": {
+ "x": 16.008001,
+ "y": -6.3840003
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 12,
+ "room": "Nav",
+ "position": {
+ "x": 16.008001,
+ "y": -3.1680002
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 7,
+ "room": "Weapons",
+ "position": {
+ "x": 8.820001,
+ "y": 3.3240001
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 10,
+ "room": "Shields",
+ "position": {
+ "x": 9.5232,
+ "y": -14.337601
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 1,
+ "room": "Hallway",
+ "position": {
+ "x": 9.384,
+ "y": -6.438
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 3,
+ "room": "Electrical",
+ "position": {
+ "x": -9.7764,
+ "y": -8.034
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 8,
+ "room": "Reactor",
+ "position": {
+ "x": -20.796001,
+ "y": -6.9528003
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 11,
+ "room": "Reactor",
+ "position": {
+ "x": -21.876,
+ "y": -3.0516002
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 9,
+ "room": "LowerEngine",
+ "position": {
+ "x": -15.2508,
+ "y": -13.656001
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 4,
+ "room": "UpperEngine",
+ "position": {
+ "x": -15.288,
+ "y": 2.52
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 5,
+ "room": "Security",
+ "position": {
+ "x": -12.534,
+ "y": -6.9492
+ },
+ "usableDistance": 1
+ },
+ {
+ "id": 6,
+ "room": "MedBay",
+ "position": {
+ "x": -10.608001,
+ "y": -4.176
+ },
+ "usableDistance": 1
+ }
+ ]
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "0": {
+ "name": "AdminVent",
+ "position": {
+ "x": 2.544,
+ "y": -9.955201
+ },
+ "left": 2,
+ "center": null,
+ "right": 1
+ },
+ "1": {
+ "name": "BigYVent",
+ "position": {
+ "x": 9.384,
+ "y": -6.438
+ },
+ "left": 0,
+ "center": null,
+ "right": 2
+ },
+ "2": {
+ "name": "CafeVent",
+ "position": {
+ "x": 4.2588,
+ "y": -0.27600002
+ },
+ "left": 0,
+ "center": null,
+ "right": 1
+ },
+ "3": {
+ "name": "ElecVent",
+ "position": {
+ "x": -9.7764,
+ "y": -8.034
+ },
+ "left": 5,
+ "center": null,
+ "right": 6
+ },
+ "4": {
+ "name": "LEngineVent",
+ "position": {
+ "x": -15.288,
+ "y": 2.52
+ },
+ "left": 11,
+ "center": null,
+ "right": null
+ },
+ "5": {
+ "name": "SecurityVent",
+ "position": {
+ "x": -12.534,
+ "y": -6.9492
+ },
+ "left": 6,
+ "center": null,
+ "right": 3
+ },
+ "6": {
+ "name": "MedVent",
+ "position": {
+ "x": -10.608001,
+ "y": -4.176
+ },
+ "left": 3,
+ "center": null,
+ "right": 5
+ },
+ "7": {
+ "name": "WeaponsVent",
+ "position": {
+ "x": 8.820001,
+ "y": 3.3240001
+ },
+ "left": null,
+ "center": null,
+ "right": 12
+ },
+ "8": {
+ "name": "ReactorVent",
+ "position": {
+ "x": -20.796001,
+ "y": -6.9528003
+ },
+ "left": null,
+ "center": null,
+ "right": 9
+ },
+ "9": {
+ "name": "REngineVent",
+ "position": {
+ "x": -15.2508,
+ "y": -13.656001
+ },
+ "left": 8,
+ "center": null,
+ "right": null
+ },
+ "10": {
+ "name": "ShieldsVent",
+ "position": {
+ "x": 9.5232,
+ "y": -14.337601
+ },
+ "left": null,
+ "center": null,
+ "right": 13
+ },
+ "11": {
+ "name": "UpperReactorVent",
+ "position": {
+ "x": -21.876,
+ "y": -3.0516002
+ },
+ "left": null,
+ "center": null,
+ "right": 4
+ },
+ "12": {
+ "name": "NavVentNorth",
+ "position": {
+ "x": 16.008001,
+ "y": -3.1680002
+ },
+ "left": 7,
+ "center": null,
+ "right": null
+ },
+ "13": {
+ "name": "NavVentSouth",
+ "position": {
+ "x": 16.008001,
+ "y": -6.3840003
+ },
+ "left": 10,
+ "center": null,
+ "right": null
+ }
+}
\ No newline at end of file
+++ /dev/null
-namespace Impostor.Api.Innersloth
-{
- public enum DisconnectReason
- {
- ExitGame = 0,
- Destroy = 16,
-
- // The game you tried to join is full.
- // Check with the host to see if you can join next round.
- GameFull = 1,
-
- // The game you tried to join already started.
- // Check with the host to see if you can join next round.
- GameStarted = 2,
-
- // Could not find the game you're looking for..
- GameMissing = 3,
- IncorrectGame = 18,
-
- // For this a message can be given, specifying an empty message shows
- // "An unknown error disconnected you from the server."
- // 4, 12, 13, 14, 15 also count as Custom
- Custom = 8,
-
- // You are running an older version of the game.
- // Please update to play with others.
- IncorrectVersion = 5,
-
- // You were banned from { GameCode ?? "the room" }
- // You cannot rejoin that room.
- Banned = 6,
-
- // You were kicked from { GameCode ?? "the room" }
- // You can rejoin if the room hasn't started.
- Kicked = 7,
-
- // You were banned for hacking.
- // Please stop.
- Hacking = 10,
-
- // GameModes.LocalGame:
- // You disconnected from the host.
- // If this happens often, check your WiFi strength.
- //
- // GameModes.OnlineGame:
- // You disconnected from the server.
- // If this happens often, check your network strength.
- // This may also be a server issue.
- Error = 17,
-
- // The server stopped this game. Possibly due to inactivity.
- ServerRequest = 19,
-
- // The Among Us servers are overloaded.
- // Sorry! Please try again later!
- ServerFull = 20,
-
- FocusLostBackground = 207,
-
- // You may not join another game for another { BanMinutesLeft } minutes after intentionally disconnecting.
- IntentionalLeaving = 208,
-
- // You were disconnected because Among Us was suspended by another app.
- FocusLost = 209,
-
- NewConnection = 210,
- }
-}
+++ /dev/null
-using System;
-
-namespace Impostor.Api.Innersloth
-{
- [Flags]
- public enum GameKeywords : uint
- {
- All = 0,
- English = 256,
- SpanishLA = 2,
- Brazilian = 2048,
- Portuguese = 16,
- Korean = 4,
- Russian = 8,
- Dutch = 4096,
- Filipino = 64,
- French = 8192,
- German = 16384,
- Italian = 32768,
- Japanese = 512,
- SpanishEU = 1024,
- Arabic = 32,
- Polish = 128,
- SChinese = 65536,
- TChinese = 131072,
- Irish = 262144,
- Other = 1,
- }
-}
+++ /dev/null
-namespace Impostor.Api.Innersloth
-{
- public enum GameOverReason : byte
- {
- HumansByVote = 0,
- HumansByTask = 1,
- ImpostorByVote = 2,
- ImpostorByKill = 3,
- ImpostorBySabotage = 4,
- ImpostorDisconnect = 5,
- HumansDisconnect = 6,
- }
-}
+++ /dev/null
-namespace Impostor.Api.Innersloth
-{
- public interface ITask
- {
- int Id { get; }
-
- string Name { get; }
-
- TaskTypes Type { get; }
-
- TaskCategories Category { get; }
-
- bool IsVisual { get; }
- }
-}
+++ /dev/null
-using System.Numerics;
-
-namespace Impostor.Api.Innersloth
-{
- public interface IVent
- {
- int Id { get; }
-
- string Name { get; }
-
- Vector2 Position { get; }
-
- IVent? Left { get; }
-
- IVent? Center { get; }
-
- IVent? Right { get; }
- }
-}
+++ /dev/null
-namespace Impostor.Api.Innersloth
-{
- public enum Language
- {
- English,
- SpanishLA,
- Brazilian,
- Portuguese,
- Korean,
- Russian,
- Dutch,
- Filipino,
- French,
- German,
- Italian,
- Japanese,
- SpanishEU,
- }
-}
[Flags]
public enum MapFlags
{
- Skeld = 1,
- MiraHQ = 2,
- Polus = 4,
- Airship = 16,
-
- // 8 is taken by Dleks
+ Skeld = 1 << 0,
+ MiraHQ = 1 << 1,
+ Polus = 1 << 2,
+ Dleks = 1 << 3,
+ Airship = 1 << 4,
+ Fungle = 1 << 5,
}
}
Skeld = 0,
MiraHQ = 1,
Polus = 2,
+ Dleks = 3,
Airship = 4,
+ Fungle = 5,
}
}
+++ /dev/null
-using System.Collections.Generic;
-using System.Linq;
-using System.Numerics;
-using Impostor.Api.Innersloth.Maps.Tasks;
-using Impostor.Api.Innersloth.Maps.Vents;
-
-namespace Impostor.Api.Innersloth.Maps
-{
- public class AirshipData : IMapData
- {
- private readonly IReadOnlyDictionary<int, IVent> _vents;
- private readonly IReadOnlyDictionary<int, ITask> _tasks;
-
- internal AirshipData()
- {
- var vents = new[]
- {
- new AirshipVent(this, AirshipVent.Ids.Vault, new Vector2(-12.6322f, 8.4735f), left: AirshipVent.Ids.Cockpit),
- new AirshipVent(this, AirshipVent.Ids.Cockpit, new Vector2(-22.099f, -1.512f), left: AirshipVent.Ids.Vault, right: AirshipVent.Ids.ViewingDeck),
- new AirshipVent(this, AirshipVent.Ids.ViewingDeck, new Vector2(-15.659f, -11.6991f), left: AirshipVent.Ids.Cockpit),
- new AirshipVent(this, AirshipVent.Ids.EngineRoom, new Vector2(0.203f, -2.5361f), left: AirshipVent.Ids.Kitchen, right: AirshipVent.Ids.MainHallBottom),
- new AirshipVent(this, AirshipVent.Ids.Kitchen, new Vector2(-2.6019f, -9.338f), left: AirshipVent.Ids.EngineRoom, right: AirshipVent.Ids.MainHallBottom),
- new AirshipVent(this, AirshipVent.Ids.MainHallBottom, new Vector2(7.021f, -3.730999f), left: AirshipVent.Ids.EngineRoom, right: AirshipVent.Ids.Kitchen),
- new AirshipVent(this, AirshipVent.Ids.GapRight, new Vector2(9.814f, 3.206f), left: AirshipVent.Ids.MainHallTop, right: AirshipVent.Ids.GapLeft),
- new AirshipVent(this, AirshipVent.Ids.GapLeft, new Vector2(12.663f, 5.922f), left: AirshipVent.Ids.MainHallTop, right: AirshipVent.Ids.GapRight),
- new AirshipVent(this, AirshipVent.Ids.MainHallTop, new Vector2(3.605f, 6.923f), left: AirshipVent.Ids.GapLeft, right: AirshipVent.Ids.GapRight),
- new AirshipVent(this, AirshipVent.Ids.Showers, new Vector2(23.9869f, -1.386f), left: AirshipVent.Ids.Records, right: AirshipVent.Ids.CargoBay),
- new AirshipVent(this, AirshipVent.Ids.Records, new Vector2(23.2799f, 8.259998f), left: AirshipVent.Ids.Showers, right: AirshipVent.Ids.CargoBay),
- new AirshipVent(this, AirshipVent.Ids.CargoBay, new Vector2(30.4409f, -3.577f), left: AirshipVent.Ids.Showers, right: AirshipVent.Ids.Records),
- };
-
- Vents = vents.ToDictionary(x => x.Id, x => x).AsReadOnly();
- _vents = vents.ToDictionary(x => (int)x.Id, x => (IVent)x).AsReadOnly();
-
- var tasks = new[]
- {
- new AirshipTask(AirshipTask.Ids.ElectricalFixWiring, TaskTypes.FixWiring, TaskCategories.CommonTask),
- new AirshipTask(AirshipTask.Ids.MeetingRoomEnterIDCode, TaskTypes.EnterIdCode, TaskCategories.CommonTask),
- new AirshipTask(AirshipTask.Ids.ElectricalCalibrateDistributor, TaskTypes.CalibrateDistributor, TaskCategories.LongTask),
- new AirshipTask(AirshipTask.Ids.ElectricalResetBreakers, TaskTypes.ResetBreakers, TaskCategories.LongTask),
- new AirshipTask(AirshipTask.Ids.VaultRoomDownloadData, TaskTypes.UploadData, TaskCategories.LongTask),
- new AirshipTask(AirshipTask.Ids.BrigDownloadData, TaskTypes.UploadData, TaskCategories.LongTask),
- new AirshipTask(AirshipTask.Ids.CargoBayDownloadData, TaskTypes.UploadData, TaskCategories.LongTask),
- new AirshipTask(AirshipTask.Ids.GapRoomDownloadData, TaskTypes.UploadData, TaskCategories.LongTask),
- new AirshipTask(AirshipTask.Ids.RecordsDownloadData, TaskTypes.UploadData, TaskCategories.LongTask),
- new AirshipTask(AirshipTask.Ids.CargoBayUnlockSafe, TaskTypes.UnlockSafe, TaskCategories.LongTask),
- new AirshipTask(AirshipTask.Ids.VentilationStartFans, TaskTypes.StartFans, TaskCategories.LongTask),
- new AirshipTask(AirshipTask.Ids.MainHallEmptyGarbage, TaskTypes.EmptyGarbage, TaskCategories.LongTask),
- new AirshipTask(AirshipTask.Ids.MedicalEmptyGarbage, TaskTypes.EmptyGarbage, TaskCategories.LongTask),
- new AirshipTask(AirshipTask.Ids.KitchenEmptyGarbage, TaskTypes.EmptyGarbage, TaskCategories.LongTask),
- new AirshipTask(AirshipTask.Ids.MainHallDevelopPhotos, TaskTypes.DevelopPhotos, TaskCategories.LongTask),
- new AirshipTask(AirshipTask.Ids.CargoBayFuelEngines, TaskTypes.FuelEngines, TaskCategories.LongTask),
- new AirshipTask(AirshipTask.Ids.SecurityRewindTapes, TaskTypes.RewindTapes, TaskCategories.LongTask),
- new AirshipTask(AirshipTask.Ids.LoungeEmptyGarbage, TaskTypes.EmptyGarbage, TaskCategories.LongTask),
- new AirshipTask(AirshipTask.Ids.ShowersEmptyGarbage, TaskTypes.EmptyGarbage, TaskCategories.LongTask),
- new AirshipTask(AirshipTask.Ids.VaultRoomPolishRuby, TaskTypes.PolishRuby, TaskCategories.ShortTask),
- new AirshipTask(AirshipTask.Ids.CockpitStabilizeSteering, TaskTypes.StabilizeSteering, TaskCategories.ShortTask),
- new AirshipTask(AirshipTask.Ids.ArmoryDownloadData, TaskTypes.UploadData, TaskCategories.LongTask),
- new AirshipTask(AirshipTask.Ids.CockpitDownloadData, TaskTypes.UploadData, TaskCategories.LongTask),
- new AirshipTask(AirshipTask.Ids.CommsDownloadData, TaskTypes.UploadData, TaskCategories.LongTask),
- new AirshipTask(AirshipTask.Ids.MedicalDownloadData, TaskTypes.UploadData, TaskCategories.LongTask),
- new AirshipTask(AirshipTask.Ids.ViewingDeckDownloadData, TaskTypes.UploadData, TaskCategories.LongTask),
- new AirshipTask(AirshipTask.Ids.ElectricalDivertPowerToArmory, TaskTypes.DivertPower, TaskCategories.ShortTask),
- new AirshipTask(AirshipTask.Ids.ElectricalDivertPowerToCockpit, TaskTypes.DivertPower, TaskCategories.ShortTask),
- new AirshipTask(AirshipTask.Ids.ElectricalDivertPowerToGapRoom, TaskTypes.DivertPower, TaskCategories.ShortTask),
- new AirshipTask(AirshipTask.Ids.ElectricalDivertPowerToMainHall, TaskTypes.DivertPower, TaskCategories.ShortTask),
- new AirshipTask(AirshipTask.Ids.ElectricalDivertPowerToMeetingRoom, TaskTypes.DivertPower, TaskCategories.ShortTask),
- new AirshipTask(AirshipTask.Ids.ElectricalDivertPowerToShowers, TaskTypes.DivertPower, TaskCategories.ShortTask),
- new AirshipTask(AirshipTask.Ids.ElectricalDivertPowerToEngine, TaskTypes.DivertPower, TaskCategories.ShortTask),
- new AirshipTask(AirshipTask.Ids.ShowersPickUpTowels, TaskTypes.PickUpTowels, TaskCategories.ShortTask),
- new AirshipTask(AirshipTask.Ids.LoungeCleanToilet, TaskTypes.CleanToilet, TaskCategories.ShortTask),
- new AirshipTask(AirshipTask.Ids.VaultRoomDressMannequin, TaskTypes.DressMannequin, TaskCategories.ShortTask),
- new AirshipTask(AirshipTask.Ids.RecordsSortRecords, TaskTypes.SortRecords, TaskCategories.ShortTask),
- new AirshipTask(AirshipTask.Ids.ArmoryPutAwayPistols, TaskTypes.PutAwayPistols, TaskCategories.ShortTask),
- new AirshipTask(AirshipTask.Ids.ArmoryPutAwayRifles, TaskTypes.PutAwayRifles, TaskCategories.ShortTask),
- new AirshipTask(AirshipTask.Ids.MainHallDecontaminate, TaskTypes.Decontaminate, TaskCategories.ShortTask),
- new AirshipTask(AirshipTask.Ids.KitchenMakeBurger, TaskTypes.MakeBurger, TaskCategories.ShortTask),
- new AirshipTask(AirshipTask.Ids.ShowersFixShower, TaskTypes.FixShower, TaskCategories.ShortTask),
- new AirshipTask(AirshipTask.Ids.CleanVent, TaskTypes.VentCleaning, TaskCategories.ShortTask),
- };
-
- Tasks = tasks.ToDictionary(x => x.Id, x => x).AsReadOnly();
- _tasks = tasks.ToDictionary(x => (int)x.Id, x => (ITask)x).AsReadOnly();
- }
-
- public IReadOnlyDictionary<AirshipVent.Ids, AirshipVent> Vents { get; }
-
- IReadOnlyDictionary<int, IVent> IMapData.Vents => _vents;
-
- public IReadOnlyDictionary<AirshipTask.Ids, AirshipTask> Tasks { get; }
-
- IReadOnlyDictionary<int, ITask> IMapData.Tasks => _tasks;
- }
-}
--- /dev/null
+using System.Numerics;
+
+namespace Impostor.Api.Innersloth.Maps;
+
+public sealed class DoorData
+{
+ internal DoorData(int id, SystemTypes room, Vector2 position)
+ {
+ Id = id;
+ Room = room;
+ Position = position;
+ }
+
+ public int Id { get; }
+
+ public SystemTypes Room { get; }
+
+ public Vector2 Position { get; }
+}
+++ /dev/null
-using System.Collections.Generic;
-
-namespace Impostor.Api.Innersloth.Maps
-{
- public interface IMapData
- {
- public static IReadOnlyDictionary<MapTypes, IMapData> Maps { get; } = new Dictionary<MapTypes, IMapData>
- {
- [MapTypes.Skeld] = new SkeldData(),
- [MapTypes.MiraHQ] = new MiraData(),
- [MapTypes.Polus] = new PolusData(),
- [MapTypes.Airship] = new AirshipData(),
- }.AsReadOnly();
-
- IReadOnlyDictionary<int, IVent> Vents { get; }
-
- IReadOnlyDictionary<int, ITask> Tasks { get; }
- }
-}
--- /dev/null
+using System.Collections.Generic;
+using System.Numerics;
+
+namespace Impostor.Api.Innersloth.Maps;
+
+public abstract class MapData
+{
+ protected internal MapData()
+ {
+ }
+
+ public static IReadOnlyDictionary<MapTypes, MapData> Maps { get; } = new Dictionary<MapTypes, MapData>
+ {
+ [MapTypes.Skeld] = new SkeldData(),
+ [MapTypes.MiraHQ] = new MiraData(),
+ [MapTypes.Polus] = new PolusData(),
+ [MapTypes.Airship] = new AirshipData(),
+ [MapTypes.Fungle] = new FungleData(),
+ }.AsReadOnly();
+
+ public abstract IReadOnlyDictionary<int, VentData> Vents { get; }
+
+ public abstract IReadOnlyDictionary<int, TaskData> Tasks { get; }
+
+ public abstract IReadOnlyDictionary<int, DoorData> Doors { get; }
+
+ public abstract float SpawnRadius { get; }
+
+ public abstract Vector2 InitialSpawnCenter { get; }
+
+ public abstract Vector2 MeetingSpawnCenter { get; }
+
+ public abstract Vector2 MeetingSpawnCenter2 { get; }
+}
+++ /dev/null
-using System.Collections.Generic;
-using System.Linq;
-using System.Numerics;
-using Impostor.Api.Innersloth.Maps.Tasks;
-using Impostor.Api.Innersloth.Maps.Vents;
-
-namespace Impostor.Api.Innersloth.Maps
-{
- public class MiraData : IMapData
- {
- private readonly IReadOnlyDictionary<int, IVent> _vents;
- private readonly IReadOnlyDictionary<int, ITask> _tasks;
-
- internal MiraData()
- {
- var vents = new[]
- {
- new MiraVent(this, MiraVent.Ids.Balcony, new Vector2(23.77f, -1.94f), left: MiraVent.Ids.Medbay, right: MiraVent.Ids.Cafeteria),
- new MiraVent(this, MiraVent.Ids.Cafeteria, new Vector2(23.9f, 7.18f), left: MiraVent.Ids.Admin, right: MiraVent.Ids.Balcony),
- new MiraVent(this, MiraVent.Ids.Reactor, new Vector2(0.4800001f, 10.697f), left: MiraVent.Ids.Laboratory, center: MiraVent.Ids.Decontamination, right: MiraVent.Ids.Launchpad),
- new MiraVent(this, MiraVent.Ids.Laboratory, new Vector2(11.606f, 13.816f), left: MiraVent.Ids.Reactor, center: MiraVent.Ids.Decontamination, right: MiraVent.Ids.Office),
- new MiraVent(this, MiraVent.Ids.Office, new Vector2(13.28f, 20.13f), left: MiraVent.Ids.Laboratory, center: MiraVent.Ids.Admin, right: MiraVent.Ids.Greenhouse),
- new MiraVent(this, MiraVent.Ids.Admin, new Vector2(22.39f, 17.23f), left: MiraVent.Ids.Greenhouse, center: MiraVent.Ids.Cafeteria, right: MiraVent.Ids.Office),
- new MiraVent(this, MiraVent.Ids.Greenhouse, new Vector2(17.85f, 25.23f), left: MiraVent.Ids.Admin, right: MiraVent.Ids.Office),
- new MiraVent(this, MiraVent.Ids.Medbay, new Vector2(15.41f, -1.82f), left: MiraVent.Ids.Balcony, right: MiraVent.Ids.LockerRoom),
- new MiraVent(this, MiraVent.Ids.Decontamination, new Vector2(6.83f, 3.145f), left: MiraVent.Ids.Reactor, center: MiraVent.Ids.LockerRoom, right: MiraVent.Ids.Laboratory),
- new MiraVent(this, MiraVent.Ids.LockerRoom, new Vector2(4.29f, 0.5299997f), left: MiraVent.Ids.Medbay, center: MiraVent.Ids.Launchpad, right: MiraVent.Ids.Decontamination),
- new MiraVent(this, MiraVent.Ids.Launchpad, new Vector2(-6.18f, 3.56f), left: MiraVent.Ids.Reactor, right: MiraVent.Ids.LockerRoom),
- };
-
- Vents = vents.ToDictionary(x => x.Id, x => x).AsReadOnly();
- _vents = vents.ToDictionary(x => (int)x.Id, x => (IVent)x).AsReadOnly();
-
- var tasks = new[]
- {
- new MiraTask(MiraTask.Ids.HallwayFixWiring, TaskTypes.FixWiring, TaskCategories.CommonTask),
- new MiraTask(MiraTask.Ids.AdminEnterIDCode, TaskTypes.EnterIdCode, TaskCategories.CommonTask),
- new MiraTask(MiraTask.Ids.MedbaySubmitScan, TaskTypes.SubmitScan, TaskCategories.LongTask, true),
- new MiraTask(MiraTask.Ids.BalconyClearAsteroids, TaskTypes.ClearAsteroids, TaskCategories.LongTask),
- new MiraTask(MiraTask.Ids.ElectricalDivertPowerToAdmin, TaskTypes.DivertPower, TaskCategories.ShortTask),
- new MiraTask(MiraTask.Ids.ElectricalDivertPowerToCafeteria, TaskTypes.DivertPower, TaskCategories.ShortTask),
- new MiraTask(MiraTask.Ids.ElectricalDivertPowerToCommunications, TaskTypes.DivertPower, TaskCategories.ShortTask),
- new MiraTask(MiraTask.Ids.ElectricalDivertPowerToLaunchpad, TaskTypes.DivertPower, TaskCategories.ShortTask),
- new MiraTask(MiraTask.Ids.ElectricalDivertPowerToMedbay, TaskTypes.DivertPower, TaskCategories.ShortTask),
- new MiraTask(MiraTask.Ids.ElectricalDivertPowerToOffice, TaskTypes.DivertPower, TaskCategories.ShortTask),
- new MiraTask(MiraTask.Ids.StorageWaterPlants, TaskTypes.WaterPlants, TaskCategories.LongTask),
- new MiraTask(MiraTask.Ids.ReactorStartReactor, TaskTypes.StartReactor, TaskCategories.LongTask),
- new MiraTask(MiraTask.Ids.ElectricalDivertPowerToGreenhouse, TaskTypes.DivertPower, TaskCategories.ShortTask),
- new MiraTask(MiraTask.Ids.AdminChartCourse, TaskTypes.ChartCourse, TaskCategories.ShortTask),
- new MiraTask(MiraTask.Ids.GreenhouseCleanO2Filter, TaskTypes.Filter, TaskCategories.ShortTask),
- new MiraTask(MiraTask.Ids.LaunchpadFuelEngines, TaskTypes.FuelEngines, TaskCategories.ShortTask),
- new MiraTask(MiraTask.Ids.LaboratoryAssembleArtifact, TaskTypes.AssembleArtifact, TaskCategories.ShortTask),
- new MiraTask(MiraTask.Ids.LaboratorySortSamples, TaskTypes.SortSamples, TaskCategories.ShortTask),
- new MiraTask(MiraTask.Ids.AdminPrimeShields, TaskTypes.PrimeShields, TaskCategories.ShortTask),
- new MiraTask(MiraTask.Ids.CafeteriaEmptyGarbage, TaskTypes.EmptyGarbage, TaskCategories.ShortTask),
- new MiraTask(MiraTask.Ids.BalconyMeasureWeather, TaskTypes.MeasureWeather, TaskCategories.ShortTask),
- new MiraTask(MiraTask.Ids.ElectricalDivertPowerToLaboratory, TaskTypes.DivertPower, TaskCategories.ShortTask),
- new MiraTask(MiraTask.Ids.CafeteriaBuyBeverage, TaskTypes.BuyBeverage, TaskCategories.ShortTask),
- new MiraTask(MiraTask.Ids.OfficeProcessData, TaskTypes.ProcessData, TaskCategories.ShortTask),
- new MiraTask(MiraTask.Ids.LaunchpadRunDiagnostics, TaskTypes.RunDiagnostics, TaskCategories.LongTask),
- new MiraTask(MiraTask.Ids.ReactorUnlockManifolds, TaskTypes.UnlockManifolds, TaskCategories.ShortTask),
- new MiraTask(MiraTask.Ids.CleanVent, TaskTypes.VentCleaning, TaskCategories.ShortTask),
- };
-
- Tasks = tasks.ToDictionary(x => x.Id, x => x).AsReadOnly();
- _tasks = tasks.ToDictionary(x => (int)x.Id, x => (ITask)x).AsReadOnly();
- }
-
- public IReadOnlyDictionary<MiraVent.Ids, MiraVent> Vents { get; }
-
- IReadOnlyDictionary<int, IVent> IMapData.Vents => _vents;
-
- public IReadOnlyDictionary<MiraTask.Ids, MiraTask> Tasks { get; }
-
- IReadOnlyDictionary<int, ITask> IMapData.Tasks => _tasks;
- }
-}
+++ /dev/null
-using System.Collections.Generic;
-using System.Linq;
-using System.Numerics;
-using Impostor.Api.Innersloth.Maps.Tasks;
-using Impostor.Api.Innersloth.Maps.Vents;
-
-namespace Impostor.Api.Innersloth.Maps
-{
- public class PolusData : IMapData
- {
- private readonly IReadOnlyDictionary<int, IVent> _vents;
- private readonly IReadOnlyDictionary<int, ITask> _tasks;
-
- internal PolusData()
- {
- var vents = new[]
- {
- new PolusVent(this, PolusVent.Ids.Security, new Vector2(1.929f, -9.558001f), left: PolusVent.Ids.O2, right: PolusVent.Ids.Electrical),
- new PolusVent(this, PolusVent.Ids.Electrical, new Vector2(6.9f, -14.41f), left: PolusVent.Ids.O2, right: PolusVent.Ids.Security),
- new PolusVent(this, PolusVent.Ids.O2, new Vector2(3.51f, -16.58f), left: PolusVent.Ids.Electrical, right: PolusVent.Ids.Security),
- new PolusVent(this, PolusVent.Ids.Communications, new Vector2(12.304f, -18.898f), left: PolusVent.Ids.Storage, right: PolusVent.Ids.Office),
- new PolusVent(this, PolusVent.Ids.Office, new Vector2(16.379f, -19.599f), left: PolusVent.Ids.Communications, right: PolusVent.Ids.Storage),
- new PolusVent(this, PolusVent.Ids.Admin, new Vector2(20.089f, -25.517f), left: PolusVent.Ids.OutsideAdmin, right: PolusVent.Ids.Lava),
- new PolusVent(this, PolusVent.Ids.Laboratory, new Vector2(32.963f, -9.526f), right: PolusVent.Ids.Lava),
- new PolusVent(this, PolusVent.Ids.Lava, new Vector2(30.907f, -11.86f), left: PolusVent.Ids.Laboratory, right: PolusVent.Ids.Admin),
- new PolusVent(this, PolusVent.Ids.Storage, new Vector2(22f, -12.19f), left: PolusVent.Ids.Communications, right: PolusVent.Ids.Office),
- new PolusVent(this, PolusVent.Ids.RightStabilizer, new Vector2(23.72f, -7.82f), left: PolusVent.Ids.LeftStabilizer),
- new PolusVent(this, PolusVent.Ids.LeftStabilizer, new Vector2(9.64f, -7.72f), left: PolusVent.Ids.RightStabilizer),
- new PolusVent(this, PolusVent.Ids.OutsideAdmin, new Vector2(18.93f, -24.85f), right: PolusVent.Ids.Admin),
- };
-
- Vents = vents.ToDictionary(x => x.Id, x => x).AsReadOnly();
- _vents = vents.ToDictionary(x => (int)x.Id, x => (IVent)x).AsReadOnly();
-
- var tasks = new[]
- {
- new PolusTask(PolusTask.Ids.OfficeSwipeCard, TaskTypes.SwipeCard, TaskCategories.CommonTask),
- new PolusTask(PolusTask.Ids.DropshipInsertKeys, TaskTypes.InsertKeys, TaskCategories.CommonTask),
- new PolusTask(PolusTask.Ids.OfficeScanBoardingPass, TaskTypes.ScanBoardingPass, TaskCategories.CommonTask),
- new PolusTask(PolusTask.Ids.ElectricalFixWiring, TaskTypes.FixWiring, TaskCategories.CommonTask),
- new PolusTask(PolusTask.Ids.WeaponsDownloadData, TaskTypes.UploadData, TaskCategories.ShortTask),
- new PolusTask(PolusTask.Ids.OfficeDownloadData, TaskTypes.UploadData, TaskCategories.ShortTask),
- new PolusTask(PolusTask.Ids.ElectricalDownloadData, TaskTypes.UploadData, TaskCategories.ShortTask),
- new PolusTask(PolusTask.Ids.SpecimenRoomDownloadData, TaskTypes.UploadData, TaskCategories.ShortTask),
- new PolusTask(PolusTask.Ids.O2DownloadData, TaskTypes.UploadData, TaskCategories.ShortTask),
- new PolusTask(PolusTask.Ids.SpecimenRoomStartReactor, TaskTypes.StartReactor, TaskCategories.LongTask),
- new PolusTask(PolusTask.Ids.StorageFuelEngines, TaskTypes.FuelEngines, TaskCategories.LongTask),
- new PolusTask(PolusTask.Ids.BoilerRoomOpenWaterways, TaskTypes.OpenWaterways, TaskCategories.LongTask),
- new PolusTask(PolusTask.Ids.MedbayInspectSample, TaskTypes.InspectSample, TaskCategories.LongTask),
- new PolusTask(PolusTask.Ids.BoilerRoomReplaceWaterJug, TaskTypes.ReplaceWaterJug, TaskCategories.LongTask),
- new PolusTask(PolusTask.Ids.OutsideFixWeatherNodeNode_GI, TaskTypes.ActivateWeatherNodes, TaskCategories.LongTask),
- new PolusTask(PolusTask.Ids.OutsideFixWeatherNodeNode_IRO, TaskTypes.ActivateWeatherNodes, TaskCategories.LongTask),
- new PolusTask(PolusTask.Ids.OutsideFixWeatherNodeNode_PD, TaskTypes.ActivateWeatherNodes, TaskCategories.LongTask),
- new PolusTask(PolusTask.Ids.OutsideFixWeatherNodeNode_TB, TaskTypes.ActivateWeatherNodes, TaskCategories.LongTask),
- new PolusTask(PolusTask.Ids.CommunicationsRebootWiFi, TaskTypes.RebootWifi, TaskCategories.LongTask),
- new PolusTask(PolusTask.Ids.O2MonitorTree, TaskTypes.MonitorOxygen, TaskCategories.ShortTask),
- new PolusTask(PolusTask.Ids.SpecimenRoomUnlockManifolds, TaskTypes.UnlockManifolds, TaskCategories.ShortTask),
- new PolusTask(PolusTask.Ids.SpecimenRoomStoreArtifacts, TaskTypes.StoreArtifact, TaskCategories.ShortTask),
- new PolusTask(PolusTask.Ids.O2FillCanisters, TaskTypes.FillCanisters, TaskCategories.ShortTask),
- new PolusTask(PolusTask.Ids.O2EmptyGarbage, TaskTypes.EmptyGarbage, TaskCategories.ShortTask),
- new PolusTask(PolusTask.Ids.DropshipChartCourse, TaskTypes.ChartCourse, TaskCategories.ShortTask),
- new PolusTask(PolusTask.Ids.MedbaySubmitScan, TaskTypes.SubmitScan, TaskCategories.ShortTask, true),
- new PolusTask(PolusTask.Ids.WeaponsClearAsteroids, TaskTypes.ClearAsteroids, TaskCategories.ShortTask, true),
- new PolusTask(PolusTask.Ids.OutsideFixWeatherNodeNode_CA, TaskTypes.ActivateWeatherNodes, TaskCategories.LongTask),
- new PolusTask(PolusTask.Ids.OutsideFixWeatherNodeNode_MLG, TaskTypes.ActivateWeatherNodes, TaskCategories.LongTask),
- new PolusTask(PolusTask.Ids.LaboratoryAlignTelescope, TaskTypes.AlignTelescope, TaskCategories.ShortTask),
- new PolusTask(PolusTask.Ids.LaboratoryRepairDrill, TaskTypes.RepairDrill, TaskCategories.ShortTask),
- new PolusTask(PolusTask.Ids.LaboratoryRecordTemperature, TaskTypes.RecordTemperature, TaskCategories.ShortTask),
- new PolusTask(PolusTask.Ids.OutsideRecordTemperature, TaskTypes.RecordTemperature, TaskCategories.ShortTask),
- };
-
- Tasks = tasks.ToDictionary(x => x.Id, x => x).AsReadOnly();
- _tasks = tasks.ToDictionary(x => (int)x.Id, x => (ITask)x).AsReadOnly();
- }
-
- public IReadOnlyDictionary<PolusVent.Ids, PolusVent> Vents { get; }
-
- IReadOnlyDictionary<int, IVent> IMapData.Vents => _vents;
-
- public IReadOnlyDictionary<PolusTask.Ids, PolusTask> Tasks { get; }
-
- IReadOnlyDictionary<int, ITask> IMapData.Tasks => _tasks;
- }
-}
+++ /dev/null
-using System.Collections.Generic;
-using System.Linq;
-using System.Numerics;
-using Impostor.Api.Innersloth.Maps.Tasks;
-using Impostor.Api.Innersloth.Maps.Vents;
-
-namespace Impostor.Api.Innersloth.Maps
-{
- public class SkeldData : IMapData
- {
- private readonly IReadOnlyDictionary<int, IVent> _vents;
- private readonly IReadOnlyDictionary<int, ITask> _tasks;
-
- internal SkeldData()
- {
- var vents = new[]
- {
- new SkeldVent(this, SkeldVent.Ids.Admin, new Vector2(2.544f, -9.955201f), left: SkeldVent.Ids.Cafeteria, right: SkeldVent.Ids.RightHallway),
- new SkeldVent(this, SkeldVent.Ids.RightHallway, new Vector2(9.384f, -6.438f), left: SkeldVent.Ids.Admin, right: SkeldVent.Ids.Cafeteria),
- new SkeldVent(this, SkeldVent.Ids.Cafeteria, new Vector2(4.2588f, -0.276f), left: SkeldVent.Ids.Admin, right: SkeldVent.Ids.RightHallway),
- new SkeldVent(this, SkeldVent.Ids.Electrical, new Vector2(-9.7764f, -8.034f), left: SkeldVent.Ids.Security, right: SkeldVent.Ids.Medbay),
- new SkeldVent(this, SkeldVent.Ids.UpperEngine, new Vector2(-15.288f, 2.52f), left: SkeldVent.Ids.UpperReactor),
- new SkeldVent(this, SkeldVent.Ids.Security, new Vector2(-12.534f, -6.9492f), left: SkeldVent.Ids.Medbay, right: SkeldVent.Ids.Electrical),
- new SkeldVent(this, SkeldVent.Ids.Medbay, new Vector2(-10.608f, -4.176f), left: SkeldVent.Ids.Security, right: SkeldVent.Ids.Electrical),
- new SkeldVent(this, SkeldVent.Ids.Weapons, new Vector2(8.820001f, 3.324f), right: SkeldVent.Ids.UpperNavigation),
- new SkeldVent(this, SkeldVent.Ids.LowerReactor, new Vector2(-20.796f, -6.9528f), left: SkeldVent.Ids.LowerEngine),
- new SkeldVent(this, SkeldVent.Ids.LowerEngine, new Vector2(-15.2508f, -13.656f), left: SkeldVent.Ids.LowerReactor),
- new SkeldVent(this, SkeldVent.Ids.Shields, new Vector2(9.5232f, -14.3376f), left: SkeldVent.Ids.LowerNavigation),
- new SkeldVent(this, SkeldVent.Ids.UpperReactor, new Vector2(-21.876f, -3.0516f), left: SkeldVent.Ids.UpperEngine),
- new SkeldVent(this, SkeldVent.Ids.UpperNavigation, new Vector2(16.008f, -3.168f), right: SkeldVent.Ids.Weapons),
- new SkeldVent(this, SkeldVent.Ids.LowerNavigation, new Vector2(16.008f, -6.384f), right: SkeldVent.Ids.Shields),
- };
-
- Vents = vents.ToDictionary(x => x.Id, x => x).AsReadOnly();
- _vents = vents.ToDictionary(x => (int)x.Id, x => (IVent)x).AsReadOnly();
-
- var tasks = new[]
- {
- new SkeldTask(SkeldTask.Ids.AdminSwipeCard, TaskTypes.SwipeCard, TaskCategories.CommonTask),
- new SkeldTask(SkeldTask.Ids.ElectricalFixWiring, TaskTypes.FixWiring, TaskCategories.CommonTask),
- new SkeldTask(SkeldTask.Ids.WeaponsClearAsteroids, TaskTypes.ClearAsteroids, TaskCategories.LongTask, true),
- new SkeldTask(SkeldTask.Ids.EnginesAlignEngineOutput, TaskTypes.AlignEngineOutput, TaskCategories.ShortTask),
- new SkeldTask(SkeldTask.Ids.MedbaySubmitScan, TaskTypes.SubmitScan, TaskCategories.LongTask, true),
- new SkeldTask(SkeldTask.Ids.MedbayInspectSample, TaskTypes.InspectSample, TaskCategories.LongTask),
- new SkeldTask(SkeldTask.Ids.StorageFuelEngines, TaskTypes.FuelEngines, TaskCategories.LongTask),
- new SkeldTask(SkeldTask.Ids.ReactorStartReactor, TaskTypes.StartReactor, TaskCategories.LongTask),
- new SkeldTask(SkeldTask.Ids.O2EmptyChute, TaskTypes.EmptyChute, TaskCategories.LongTask, true),
- new SkeldTask(SkeldTask.Ids.CafeteriaEmptyGarbage, TaskTypes.EmptyGarbage, TaskCategories.LongTask, true),
- new SkeldTask(SkeldTask.Ids.CommunicationsDownloadData, TaskTypes.UploadData, TaskCategories.ShortTask),
- new SkeldTask(SkeldTask.Ids.ElectricalCalibrateDistributor, TaskTypes.CalibrateDistributor, TaskCategories.ShortTask),
- new SkeldTask(SkeldTask.Ids.NavigationChartCourse, TaskTypes.ChartCourse, TaskCategories.ShortTask),
- new SkeldTask(SkeldTask.Ids.O2CleanO2Filter, TaskTypes.Filter, TaskCategories.ShortTask),
- new SkeldTask(SkeldTask.Ids.ReactorUnlockManifolds, TaskTypes.UnlockManifolds, TaskCategories.ShortTask),
- new SkeldTask(SkeldTask.Ids.ElectricalDownloadData, TaskTypes.UploadData, TaskCategories.ShortTask),
- new SkeldTask(SkeldTask.Ids.NavigationStabilizeSteering, TaskTypes.StabilizeSteering, TaskCategories.ShortTask),
- new SkeldTask(SkeldTask.Ids.WeaponsDownloadData, TaskTypes.UploadData, TaskCategories.ShortTask),
- new SkeldTask(SkeldTask.Ids.ShieldsPrimeShields, TaskTypes.PrimeShields, TaskCategories.ShortTask, true),
- new SkeldTask(SkeldTask.Ids.CafeteriaDownloadData, TaskTypes.UploadData, TaskCategories.ShortTask),
- new SkeldTask(SkeldTask.Ids.NavigationDownloadData, TaskTypes.UploadData, TaskCategories.ShortTask),
- new SkeldTask(SkeldTask.Ids.ElectricalDivertPowerToShields, TaskTypes.DivertPower, TaskCategories.ShortTask),
- new SkeldTask(SkeldTask.Ids.ElectricalDivertPowerToWeapons, TaskTypes.DivertPower, TaskCategories.ShortTask),
- new SkeldTask(SkeldTask.Ids.ElectricalDivertPowerToCommunications, TaskTypes.DivertPower, TaskCategories.ShortTask),
- new SkeldTask(SkeldTask.Ids.ElectricalDivertPowerToUpperEngine, TaskTypes.DivertPower, TaskCategories.ShortTask),
- new SkeldTask(SkeldTask.Ids.ElectricalDivertPowerToO2, TaskTypes.DivertPower, TaskCategories.ShortTask),
- new SkeldTask(SkeldTask.Ids.ElectricalDivertPowerToNavigation, TaskTypes.DivertPower, TaskCategories.ShortTask),
- new SkeldTask(SkeldTask.Ids.ElectricalDivertPowerToLowerEngine, TaskTypes.DivertPower, TaskCategories.ShortTask),
- new SkeldTask(SkeldTask.Ids.ElectricalDivertPowerToSecurity, TaskTypes.DivertPower, TaskCategories.ShortTask),
- new SkeldTask(SkeldTask.Ids.CleanVent, TaskTypes.VentCleaning, TaskCategories.ShortTask),
- };
-
- Tasks = tasks.ToDictionary(x => x.Id, x => x).AsReadOnly();
- _tasks = tasks.ToDictionary(x => (int)x.Id, x => (ITask)x).AsReadOnly();
- }
-
- public IReadOnlyDictionary<SkeldVent.Ids, SkeldVent> Vents { get; }
-
- IReadOnlyDictionary<int, IVent> IMapData.Vents => _vents;
-
- public IReadOnlyDictionary<SkeldTask.Ids, SkeldTask> Tasks { get; }
-
- IReadOnlyDictionary<int, ITask> IMapData.Tasks => _tasks;
- }
-}
--- /dev/null
+namespace Impostor.Api.Innersloth.Maps;
+
+public sealed class TaskData
+{
+ internal TaskData(int id, TaskTypes type, TaskCategories category, bool isVisual = false)
+ {
+ Id = id;
+ Name = id.ToString();
+ Type = type;
+ Category = category;
+ IsVisual = isVisual;
+ }
+
+ public int Id { get; }
+
+ public string Name { get; }
+
+ public TaskTypes Type { get; }
+
+ public TaskCategories Category { get; }
+
+ public bool IsVisual { get; }
+}
+++ /dev/null
-namespace Impostor.Api.Innersloth.Maps.Tasks
-{
- public class AirshipTask : ITask
- {
- internal AirshipTask(Ids id, TaskTypes type, TaskCategories category, bool isVisual = false)
- {
- Id = id;
- Name = id.ToString();
- Type = type;
- Category = category;
- IsVisual = isVisual;
- }
-
- public enum Ids
- {
- ElectricalFixWiring = 0,
- MeetingRoomEnterIDCode = 1,
- ElectricalCalibrateDistributor = 2,
- ElectricalResetBreakers = 3,
- VaultRoomDownloadData = 4,
- BrigDownloadData = 5,
- CargoBayDownloadData = 6,
- GapRoomDownloadData = 7,
- RecordsDownloadData = 8,
- CargoBayUnlockSafe = 9,
- VentilationStartFans = 10,
- MainHallEmptyGarbage = 11,
- MedicalEmptyGarbage = 12,
- KitchenEmptyGarbage = 13,
- MainHallDevelopPhotos = 14,
- CargoBayFuelEngines = 15,
- SecurityRewindTapes = 16,
- LoungeEmptyGarbage = 17,
- ShowersEmptyGarbage = 18,
- VaultRoomPolishRuby = 19,
- CockpitStabilizeSteering = 20,
- ArmoryDownloadData = 21,
- CockpitDownloadData = 22,
- CommsDownloadData = 23,
- MedicalDownloadData = 24,
- ViewingDeckDownloadData = 25,
- ElectricalDivertPowerToArmory = 26,
- ElectricalDivertPowerToCockpit = 27,
- ElectricalDivertPowerToGapRoom = 28,
- ElectricalDivertPowerToMainHall = 29,
- ElectricalDivertPowerToMeetingRoom = 30,
- ElectricalDivertPowerToShowers = 31,
- ElectricalDivertPowerToEngine = 32,
- ShowersPickUpTowels = 33,
- LoungeCleanToilet = 34,
- VaultRoomDressMannequin = 35,
- RecordsSortRecords = 36,
- ArmoryPutAwayPistols = 37,
- ArmoryPutAwayRifles = 38,
- MainHallDecontaminate = 39,
- KitchenMakeBurger = 40,
- ShowersFixShower = 41,
- CleanVent = 42,
- }
-
- public Ids Id { get; }
-
- int ITask.Id => (int)Id;
-
- public string Name { get; }
-
- public TaskTypes Type { get; }
-
- public TaskCategories Category { get; }
-
- public bool IsVisual { get; }
- }
-}
+++ /dev/null
-namespace Impostor.Api.Innersloth.Maps.Tasks
-{
- public class MiraTask : ITask
- {
- internal MiraTask(Ids id, TaskTypes type, TaskCategories category, bool isVisual = false)
- {
- Id = id;
- Name = id.ToString();
- Type = type;
- Category = category;
- IsVisual = isVisual;
- }
-
- public enum Ids
- {
- HallwayFixWiring = 0,
- AdminEnterIDCode = 1,
- MedbaySubmitScan = 2,
- BalconyClearAsteroids = 3,
- ElectricalDivertPowerToAdmin = 4,
- ElectricalDivertPowerToCafeteria = 5,
- ElectricalDivertPowerToCommunications = 6,
- ElectricalDivertPowerToLaunchpad = 7,
- ElectricalDivertPowerToMedbay = 8,
- ElectricalDivertPowerToOffice = 9,
- StorageWaterPlants = 10,
- ReactorStartReactor = 11,
- ElectricalDivertPowerToGreenhouse = 12,
- AdminChartCourse = 13,
- GreenhouseCleanO2Filter = 14,
- LaunchpadFuelEngines = 15,
- LaboratoryAssembleArtifact = 16,
- LaboratorySortSamples = 17,
- AdminPrimeShields = 18,
- CafeteriaEmptyGarbage = 19,
- BalconyMeasureWeather = 20,
- ElectricalDivertPowerToLaboratory = 21,
- CafeteriaBuyBeverage = 22,
- OfficeProcessData = 23,
- LaunchpadRunDiagnostics = 24,
- ReactorUnlockManifolds = 25,
- CleanVent = 26,
- }
-
- public Ids Id { get; }
-
- int ITask.Id => (int)Id;
-
- public string Name { get; }
-
- public TaskTypes Type { get; }
-
- public TaskCategories Category { get; }
-
- public bool IsVisual { get; }
- }
-}
+++ /dev/null
-namespace Impostor.Api.Innersloth.Maps.Tasks
-{
- public class PolusTask : ITask
- {
- internal PolusTask(Ids id, TaskTypes type, TaskCategories category, bool isVisual = false)
- {
- Id = id;
- Name = id.ToString();
- Type = type;
- Category = category;
- IsVisual = isVisual;
- }
-
- public enum Ids
- {
- OfficeSwipeCard = 0,
- DropshipInsertKeys = 1,
- OfficeScanBoardingPass = 2,
- ElectricalFixWiring = 3,
- WeaponsDownloadData = 4,
- OfficeDownloadData = 5,
- ElectricalDownloadData = 6,
- SpecimenRoomDownloadData = 7,
- O2DownloadData = 8,
- SpecimenRoomStartReactor = 9,
- StorageFuelEngines = 10,
- BoilerRoomOpenWaterways = 11,
- MedbayInspectSample = 12,
- BoilerRoomReplaceWaterJug = 13,
- OutsideFixWeatherNodeNode_GI = 14,
- OutsideFixWeatherNodeNode_IRO = 15,
- OutsideFixWeatherNodeNode_PD = 16,
- OutsideFixWeatherNodeNode_TB = 17,
- CommunicationsRebootWiFi = 18,
- O2MonitorTree = 19,
- SpecimenRoomUnlockManifolds = 20,
- SpecimenRoomStoreArtifacts = 21,
- O2FillCanisters = 22,
- O2EmptyGarbage = 23,
- DropshipChartCourse = 24,
- MedbaySubmitScan = 25,
- WeaponsClearAsteroids = 26,
- OutsideFixWeatherNodeNode_CA = 27,
- OutsideFixWeatherNodeNode_MLG = 28,
- LaboratoryAlignTelescope = 29,
- LaboratoryRepairDrill = 30,
- LaboratoryRecordTemperature = 31,
- OutsideRecordTemperature = 32,
- }
-
- public Ids Id { get; }
-
- int ITask.Id => (int)Id;
-
- public string Name { get; }
-
- public TaskTypes Type { get; }
-
- public TaskCategories Category { get; }
-
- public bool IsVisual { get; }
- }
-}
+++ /dev/null
-namespace Impostor.Api.Innersloth.Maps.Tasks
-{
- public class SkeldTask : ITask
- {
- internal SkeldTask(Ids id, TaskTypes type, TaskCategories category, bool isVisual = false)
- {
- Id = id;
- Name = id.ToString();
- Type = type;
- Category = category;
- IsVisual = isVisual;
- }
-
- public enum Ids
- {
- AdminSwipeCard = 0,
- ElectricalFixWiring = 1,
- WeaponsClearAsteroids = 2,
- EnginesAlignEngineOutput = 3,
- MedbaySubmitScan = 4,
- MedbayInspectSample = 5,
- StorageFuelEngines = 6,
- ReactorStartReactor = 7,
- O2EmptyChute = 8,
- CafeteriaEmptyGarbage = 9,
- CommunicationsDownloadData = 10,
- ElectricalCalibrateDistributor = 11,
- NavigationChartCourse = 12,
- O2CleanO2Filter = 13,
- ReactorUnlockManifolds = 14,
- ElectricalDownloadData = 15,
- NavigationStabilizeSteering = 16,
- WeaponsDownloadData = 17,
- ShieldsPrimeShields = 18,
- CafeteriaDownloadData = 19,
- NavigationDownloadData = 20,
- ElectricalDivertPowerToShields = 21,
- ElectricalDivertPowerToWeapons = 22,
- ElectricalDivertPowerToCommunications = 23,
- ElectricalDivertPowerToUpperEngine = 24,
- ElectricalDivertPowerToO2 = 25,
- ElectricalDivertPowerToNavigation = 26,
- ElectricalDivertPowerToLowerEngine = 27,
- ElectricalDivertPowerToSecurity = 28,
- CleanVent = 29,
- }
-
- public Ids Id { get; }
-
- int ITask.Id => (int)Id;
-
- public string Name { get; }
-
- public TaskTypes Type { get; }
-
- public TaskCategories Category { get; }
-
- public bool IsVisual { get; }
- }
-}
--- /dev/null
+using System;
+using System.Numerics;
+
+namespace Impostor.Api.Innersloth.Maps;
+
+public class VentData
+{
+ private readonly Lazy<VentData>? _left;
+
+ private readonly Lazy<VentData>? _center;
+
+ private readonly Lazy<VentData>? _right;
+
+ internal VentData(MapData data, int id, string name, Vector2 position, int? left = null, int? center = null, int? right = null)
+ {
+ Id = id;
+ Name = name;
+ Position = position;
+
+ _left = left == null ? null : new Lazy<VentData>(() => data.Vents[left.Value]);
+ _center = center == null ? null : new Lazy<VentData>(() => data.Vents[center.Value]);
+ _right = right == null ? null : new Lazy<VentData>(() => data.Vents[right.Value]);
+ }
+
+ public int Id { get; }
+
+ public string Name { get; }
+
+ public Vector2 Position { get; }
+
+ public VentData? Left => _left?.Value;
+
+ public VentData? Center => _center?.Value;
+
+ public VentData? Right => _right?.Value;
+}
+++ /dev/null
-using System;
-using System.Numerics;
-
-namespace Impostor.Api.Innersloth.Maps.Vents
-{
- public class AirshipVent : IVent
- {
- private readonly Lazy<AirshipVent>? _left;
-
- private readonly Lazy<AirshipVent>? _center;
-
- private readonly Lazy<AirshipVent>? _right;
-
- internal AirshipVent(AirshipData data, Ids id, Vector2 position, Ids? left = null, Ids? center = null, Ids? right = null)
- {
- Id = id;
- Name = id.ToString();
- Position = position;
-
- _left = left == null ? null : new Lazy<AirshipVent>(() => data.Vents[left.Value]);
- _center = center == null ? null : new Lazy<AirshipVent>(() => data.Vents[center.Value]);
- _right = right == null ? null : new Lazy<AirshipVent>(() => data.Vents[right.Value]);
- }
-
- public enum Ids
- {
- Vault = 0,
- Cockpit = 1,
- ViewingDeck = 2,
- EngineRoom = 3,
- Kitchen = 4,
- MainHallBottom = 5,
- GapRight = 6,
- GapLeft = 7,
- MainHallTop = 8,
- Showers = 9,
- Records = 10,
- CargoBay = 11,
- }
-
- public Ids Id { get; }
-
- int IVent.Id => (int)Id;
-
- public string Name { get; }
-
- public Vector2 Position { get; }
-
- public AirshipVent? Left => _left?.Value;
-
- IVent? IVent.Left => Left;
-
- public AirshipVent? Center => _center?.Value;
-
- IVent? IVent.Center => Center;
-
- public AirshipVent? Right => _right?.Value;
-
- IVent? IVent.Right => Right;
- }
-}
+++ /dev/null
-using System;
-using System.Numerics;
-
-namespace Impostor.Api.Innersloth.Maps.Vents
-{
- public class MiraVent : IVent
- {
- private readonly Lazy<MiraVent>? _left;
-
- private readonly Lazy<MiraVent>? _center;
-
- private readonly Lazy<MiraVent>? _right;
-
- internal MiraVent(MiraData data, Ids id, Vector2 position, Ids? left = null, Ids? center = null, Ids? right = null)
- {
- Id = id;
- Name = id.ToString();
- Position = position;
-
- _left = left == null ? null : new Lazy<MiraVent>(() => data.Vents[left.Value]);
- _center = center == null ? null : new Lazy<MiraVent>(() => data.Vents[center.Value]);
- _right = right == null ? null : new Lazy<MiraVent>(() => data.Vents[right.Value]);
- }
-
- public enum Ids
- {
- Balcony = 1,
- Cafeteria = 2,
- Reactor = 3,
- Laboratory = 4,
- Office = 5,
- Admin = 6,
- Greenhouse = 7,
- Medbay = 8,
- Decontamination = 9,
- LockerRoom = 10,
- Launchpad = 11,
- }
-
- public Ids Id { get; }
-
- int IVent.Id => (int)Id;
-
- public string Name { get; }
-
- public Vector2 Position { get; }
-
- public MiraVent? Left => _left?.Value;
-
- IVent? IVent.Left => Left;
-
- public MiraVent? Center => _center?.Value;
-
- IVent? IVent.Center => Center;
-
- public MiraVent? Right => _right?.Value;
-
- IVent? IVent.Right => Right;
- }
-}
+++ /dev/null
-using System;
-using System.Numerics;
-
-namespace Impostor.Api.Innersloth.Maps.Vents
-{
- public class PolusVent : IVent
- {
- private readonly Lazy<PolusVent>? _left;
-
- private readonly Lazy<PolusVent>? _center;
-
- private readonly Lazy<PolusVent>? _right;
-
- internal PolusVent(PolusData data, Ids id, Vector2 position, Ids? left = null, Ids? center = null, Ids? right = null)
- {
- Id = id;
- Name = id.ToString();
- Position = position;
-
- _left = left == null ? null : new Lazy<PolusVent>(() => data.Vents[left.Value]);
- _center = center == null ? null : new Lazy<PolusVent>(() => data.Vents[center.Value]);
- _right = right == null ? null : new Lazy<PolusVent>(() => data.Vents[right.Value]);
- }
-
- public enum Ids
- {
- Security = 0,
- Electrical = 1,
- O2 = 2,
- Communications = 3,
- Office = 4,
- Admin = 5,
- Laboratory = 6,
- Lava = 7,
- Storage = 8,
- RightStabilizer = 9,
- LeftStabilizer = 10,
- OutsideAdmin = 11,
- }
-
- public Ids Id { get; }
-
- int IVent.Id => (int)Id;
-
- public string Name { get; }
-
- public Vector2 Position { get; }
-
- public PolusVent? Left => _left?.Value;
-
- IVent? IVent.Left => Left;
-
- public PolusVent? Center => _center?.Value;
-
- IVent? IVent.Center => Center;
-
- public PolusVent? Right => _right?.Value;
-
- IVent? IVent.Right => Right;
- }
-}
+++ /dev/null
-using System;
-using System.Numerics;
-
-namespace Impostor.Api.Innersloth.Maps.Vents
-{
- public class SkeldVent : IVent
- {
- private readonly Lazy<SkeldVent>? _left;
-
- private readonly Lazy<SkeldVent>? _center;
-
- private readonly Lazy<SkeldVent>? _right;
-
- internal SkeldVent(SkeldData data, Ids id, Vector2 position, Ids? left = null, Ids? center = null, Ids? right = null)
- {
- Id = id;
- Name = id.ToString();
- Position = position;
-
- _left = left == null ? null : new Lazy<SkeldVent>(() => data.Vents[left.Value]);
- _center = center == null ? null : new Lazy<SkeldVent>(() => data.Vents[center.Value]);
- _right = right == null ? null : new Lazy<SkeldVent>(() => data.Vents[right.Value]);
- }
-
- public enum Ids
- {
- Admin = 0,
- RightHallway = 1,
- Cafeteria = 2,
- Electrical = 3,
- UpperEngine = 4,
- Security = 5,
- Medbay = 6,
- Weapons = 7,
- LowerReactor = 8,
- LowerEngine = 9,
- Shields = 10,
- UpperReactor = 11,
- UpperNavigation = 12,
- LowerNavigation = 13,
- }
-
- public Ids Id { get; }
-
- int IVent.Id => (int)Id;
-
- public string Name { get; }
-
- public Vector2 Position { get; }
-
- public SkeldVent? Left => _left?.Value;
-
- IVent? IVent.Left => Left;
-
- public SkeldVent? Center => _center?.Value;
-
- IVent? IVent.Center => Center;
-
- public SkeldVent? Right => _right?.Value;
-
- IVent? IVent.Right => Right;
- }
-}
+++ /dev/null
-namespace Impostor.Api.Innersloth
-{
- public enum Platforms
- {
- Unknown = 0,
- StandaloneEpicPC = 1,
- StandaloneSteamPC = 2,
- StandaloneMac = 3,
- StandaloneWin10 = 4,
- StandaloneItch = 5,
- IPhone = 6,
- Android = 7,
- Switch = 8,
- Xbox = 9,
- Playstation = 10,
- }
-}
+++ /dev/null
-namespace Impostor.Api.Innersloth
-{
- public enum RoleTypes : ushort
- {
- Crewmate,
- Impostor,
- Scientist,
- Engineer,
- GuardianAngel,
- Shapeshifter,
- CrewmateGhost,
- ImpostorGhost,
- }
-}
+++ /dev/null
-namespace Impostor.Api.Innersloth
-{
- public enum SystemTypes : byte
- {
- Hallway = 0,
-
- Storage = 1,
-
- Cafeteria = 2,
-
- Reactor = 3,
-
- UpperEngine = 4,
-
- Nav = 5,
-
- Admin = 6,
-
- Electrical = 7,
-
- LifeSupp = 8,
-
- Shields = 9,
-
- MedBay = 10,
-
- Security = 11,
-
- Weapons = 12,
-
- LowerEngine = 13,
-
- Comms = 14,
-
- ShipTasks = 15,
-
- Doors = 16,
-
- Sabotage = 17,
-
- /// <remarks>The only decontamination on Mira and bottom decontamination on Polus.</remarks>
- Decontamination = 18,
-
- Launchpad = 19,
-
- LockerRoom = 20,
-
- Laboratory = 21,
-
- Balcony = 22,
-
- Office = 23,
-
- Greenhouse = 24,
-
- Dropship = 25,
-
- /// <remarks>Top decontamination on Polus.</remarks>
- Decontamination2 = 26,
-
- Outside = 27,
-
- Specimens = 28,
-
- BoilerRoom = 29,
-
- VaultRoom = 30,
-
- Cockpit = 31,
-
- Armory = 32,
-
- Kitchen = 33,
-
- ViewingDeck = 34,
-
- HallOfPortraits = 35,
-
- CargoBay = 36,
-
- Ventilation = 37,
-
- Showers = 38,
-
- Engine = 39,
-
- Brig = 40,
-
- MeetingRoom = 41,
-
- Records = 42,
-
- Lounge = 43,
-
- GapRoom = 44,
-
- MainHall = 45,
-
- Medical = 46,
- }
-}
+++ /dev/null
-namespace Impostor.Api.Innersloth
-{
- public enum TaskTypes : uint
- {
- SubmitScan = 0,
- PrimeShields = 1,
- FuelEngines = 2,
- ChartCourse = 3,
- StartReactor = 4,
- SwipeCard = 5,
- ClearAsteroids = 6,
- UploadData = 7,
- InspectSample = 8,
- EmptyChute = 9,
- EmptyGarbage = 10,
- AlignEngineOutput = 11,
- FixWiring = 12,
- CalibrateDistributor = 13,
- DivertPower = 14,
- UnlockManifolds = 15,
- ResetReactor = 16,
- FixLights = 17,
- Filter = 18,
- FixComms = 19,
- RestoreOxy = 20,
- StabilizeSteering = 21,
- AssembleArtifact = 22,
- SortSamples = 23,
- MeasureWeather = 24,
- EnterIdCode = 25,
- BuyBeverage = 26,
- ProcessData = 27,
- RunDiagnostics = 28,
- WaterPlants = 29,
- MonitorOxygen = 30,
- StoreArtifact = 31,
- FillCanisters = 32,
- ActivateWeatherNodes = 33,
- InsertKeys = 34,
- ResetSeismic = 35,
- ScanBoardingPass = 36,
- OpenWaterways = 37,
- ReplaceWaterJug = 38,
- RepairDrill = 39,
- AlignTelescope = 40,
- RecordTemperature = 41,
- RebootWifi = 42,
- PolishRuby = 43,
- ResetBreakers = 44,
- Decontaminate = 45,
- MakeBurger = 46,
- UnlockSafe = 47,
- SortRecords = 48,
- PutAwayPistols = 49,
- FixShower = 50,
- CleanToilet = 51,
- DressMannequin = 52,
- PickUpTowels = 53,
- RewindTapes = 54,
- StartFans = 55,
- DevelopPhotos = 56,
- GetBiggolSword = 57,
- PutAwayRifles = 58,
- StopCharles = 59,
- VentCleaning = 60,
- }
-}
using System.Threading.Tasks;
-using Impostor.Api.Innersloth;
+using Impostor.Api.Innersloth.Maps;
namespace Impostor.Api.Net.Inner.Objects
{
{
uint Id { get; }
- ITask? Task { get; }
+ TaskData? Task { get; }
bool Complete { get; }
+++ /dev/null
-namespace Impostor.Api.Net.Inner
-{
- public enum RpcCalls : byte
- {
- PlayAnimation = 0,
- CompleteTask = 1,
- SyncSettings = 2,
- SetInfected = 3,
- Exiled = 4,
- CheckName = 5,
- SetName = 6,
- CheckColor = 7,
- SetColor = 8,
- ReportDeadBody = 11,
- MurderPlayer = 12,
- SendChat = 13,
- StartMeeting = 14,
- SetScanner = 15,
- SendChatNote = 16,
- SetStartCounter = 18,
- EnterVent = 19,
- ExitVent = 20,
- SnapTo = 21,
- Close = 22,
- VotingComplete = 23,
- CastVote = 24,
- ClearVote = 25,
- AddVote = 26,
- CloseDoorsOfType = 27,
- RepairSystem = 28,
- SetTasks = 29,
- ClimbLadder = 31,
- UsePlatform = 32,
- SendQuickChat = 33,
- BootFromVent = 34,
- UpdateSystem = 35,
- SetLevel = 38,
- SetHat = 39,
- SetSkin = 40,
- SetPet = 41,
- SetVisor = 42,
- SetNamePlate = 43,
- SetRole = 44,
- ProtectPlayer = 45,
- Shapeshift = 46,
- CheckMurder = 47,
- CheckProtect = 48,
- Pet = 49,
- CancelPet = 50,
- }
-}
--- /dev/null
+namespace Impostor.Api.Net.Messages.Rpcs
+{
+ public static class Rpc38SetLevel
+ {
+ public static void Serialize(IMessageWriter writer, uint level)
+ {
+ writer.WritePacked(level);
+ }
+
+ public static void Deserialize(IMessageReader reader, out uint level)
+ {
+ level = reader.ReadPackedUInt32();
+ }
+ }
+}
+++ /dev/null
-namespace Impostor.Api.Net.Messages.Rpcs
-{
- public static class Rpc39SetHat
- {
- public static void Serialize(IMessageWriter writer, string hat)
- {
- writer.Write(hat);
- }
-
- public static void Deserialize(IMessageReader reader, out string hat)
- {
- hat = reader.ReadString();
- }
- }
-}
--- /dev/null
+namespace Impostor.Api.Net.Messages.Rpcs
+{
+ public static class Rpc39SetHatStr
+ {
+ public static void Serialize(IMessageWriter writer, string hat)
+ {
+ writer.Write(hat);
+ }
+
+ public static void Deserialize(IMessageReader reader, out string hat)
+ {
+ hat = reader.ReadString();
+ }
+ }
+}
+++ /dev/null
-namespace Impostor.Api.Net.Messages.Rpcs
-{
- public static class Rpc40SetSkin
- {
- public static void Serialize(IMessageWriter writer, string skin)
- {
- writer.Write(skin);
- }
-
- public static void Deserialize(IMessageReader reader, out string skin)
- {
- skin = reader.ReadString();
- }
- }
-}
--- /dev/null
+namespace Impostor.Api.Net.Messages.Rpcs
+{
+ public static class Rpc40SetSkinStr
+ {
+ public static void Serialize(IMessageWriter writer, string skin)
+ {
+ writer.Write(skin);
+ }
+
+ public static void Deserialize(IMessageReader reader, out string skin)
+ {
+ skin = reader.ReadString();
+ }
+ }
+}
+++ /dev/null
-namespace Impostor.Api.Net.Messages.Rpcs
-{
- public static class Rpc41SetPet
- {
- public static void Serialize(IMessageWriter writer, string pet)
- {
- writer.Write(pet);
- }
-
- public static void Deserialize(IMessageReader reader, out string pet)
- {
- pet = reader.ReadString();
- }
- }
-}
--- /dev/null
+namespace Impostor.Api.Net.Messages.Rpcs
+{
+ public static class Rpc41SetPetStr
+ {
+ public static void Serialize(IMessageWriter writer, string pet)
+ {
+ writer.Write(pet);
+ }
+
+ public static void Deserialize(IMessageReader reader, out string pet)
+ {
+ pet = reader.ReadString();
+ }
+ }
+}
--- /dev/null
+namespace Impostor.Api.Net.Messages.Rpcs
+{
+ public static class Rpc42SetVisorStr
+ {
+ public static void Serialize(IMessageWriter writer, string visor)
+ {
+ writer.Write(visor);
+ }
+
+ public static void Deserialize(IMessageReader reader, out string visor)
+ {
+ visor = reader.ReadString();
+ }
+ }
+}
--- /dev/null
+namespace Impostor.Api.Net.Messages.Rpcs
+{
+ public static class Rpc43SetNamePlateStr
+ {
+ public static void Serialize(IMessageWriter writer, string namePlate)
+ {
+ writer.Write(namePlate);
+ }
+
+ public static void Deserialize(IMessageReader reader, out string namePlate)
+ {
+ namePlate = reader.ReadString();
+ }
+ }
+}
using Impostor.Api.Events;
-using Impostor.Api.Games;
-using Impostor.Api.Innersloth;
using Microsoft.Extensions.Logging;
namespace Impostor.Plugins.Example.Handlers
[EventListener]
public void OnPlayerEnterVentEvent(IPlayerEnterVentEvent e)
{
- _logger.LogInformation("Player {player} entered the vent in {vent}", e.PlayerControl.PlayerInfo.PlayerName, e.Vent.Name);
+ _logger.LogInformation("Player {player} entered the vent in {vent} ({ventId})", e.PlayerControl.PlayerInfo.PlayerName, e.Vent.Name, e.Vent.Id);
}
[EventListener]
public void OnPlayerExitVentEvent(IPlayerExitVentEvent e)
{
- _logger.LogInformation("Player {player} exited the vent in {vent}", e.PlayerControl.PlayerInfo.PlayerName, e.Vent.Name);
+ _logger.LogInformation("Player {player} exited the vent in {vent} ({ventId})", e.PlayerControl.PlayerInfo.PlayerName, e.Vent.Name, e.Vent.Id);
}
[EventListener]
public void OnPlayerVentEvent(IPlayerVentEvent e)
{
- _logger.LogInformation("Player {player} vented to {vent}", e.PlayerControl.PlayerInfo.PlayerName, e.NewVent.Name);
+ _logger.LogInformation("Player {player} vented to {vent} ({ventId})", e.PlayerControl.PlayerInfo.PlayerName, e.NewVent.Name, e.NewVent.Id);
}
[EventListener]
using Impostor.Api.Events.Player;
using Impostor.Api.Games;
-using Impostor.Api.Innersloth;
+using Impostor.Api.Innersloth.Maps;
using Impostor.Api.Net;
using Impostor.Api.Net.Inner.Objects;
{
public class PlayerEnterVentEvent : IPlayerEnterVentEvent
{
- public PlayerEnterVentEvent(IGame game, IClientPlayer sender, IInnerPlayerControl innerPlayerPhysics, IVent vent)
+ public PlayerEnterVentEvent(IGame game, IClientPlayer sender, IInnerPlayerControl innerPlayerPhysics, VentData vent)
{
Game = game;
ClientPlayer = sender;
public IInnerPlayerControl PlayerControl { get; }
- public IVent Vent { get; }
+ public VentData Vent { get; }
}
}
using Impostor.Api.Events.Player;
using Impostor.Api.Games;
-using Impostor.Api.Innersloth;
+using Impostor.Api.Innersloth.Maps;
using Impostor.Api.Net;
using Impostor.Api.Net.Inner.Objects;
{
public class PlayerExitVentEvent : IPlayerExitVentEvent
{
- public PlayerExitVentEvent(IGame game, IClientPlayer sender, IInnerPlayerControl innerPlayerPhysics, IVent vent)
+ public PlayerExitVentEvent(IGame game, IClientPlayer sender, IInnerPlayerControl innerPlayerPhysics, VentData vent)
{
Game = game;
ClientPlayer = sender;
public IInnerPlayerControl PlayerControl { get; }
- public IVent Vent { get; }
+ public VentData Vent { get; }
}
}
using Impostor.Api.Events.Player;
using Impostor.Api.Games;
-using Impostor.Api.Innersloth;
+using Impostor.Api.Innersloth.Maps;
using Impostor.Api.Net;
using Impostor.Api.Net.Inner.Objects;
{
public class PlayerVentEvent : IPlayerVentEvent
{
- public PlayerVentEvent(IGame game, IClientPlayer sender, IInnerPlayerControl innerPlayerPhysics, IVent vent)
+ public PlayerVentEvent(IGame game, IClientPlayer sender, IInnerPlayerControl innerPlayerPhysics, VentData vent)
{
Game = game;
ClientPlayer = sender;
public IInnerPlayerControl PlayerControl { get; }
- public IVent NewVent { get; }
+ public VentData NewVent { get; }
}
}
if (game == null)
{
- await DisconnectAsync(DisconnectReason.GameMissing);
+ await DisconnectAsync(DisconnectReason.GameNotFound);
return;
}
var game = _gameManager.Find(gameCode);
if (game == null)
{
- await DisconnectAsync(DisconnectReason.GameMissing);
+ await DisconnectAsync(DisconnectReason.GameNotFound);
return;
}
using Impostor.Api.Events.Managers;
-using Impostor.Api.Innersloth;
+using Impostor.Api.Innersloth.Maps;
using Impostor.Api.Net.Inner.Objects;
namespace Impostor.Server.Net.Inner.Objects
private readonly InnerPlayerInfo _playerInfo;
private readonly IEventManager _eventManager;
- public TaskInfo(InnerPlayerInfo playerInfo, IEventManager eventManager, uint id, ITask? task)
+ public TaskInfo(InnerPlayerInfo playerInfo, IEventManager eventManager, uint id, TaskData? task)
{
_playerInfo = playerInfo;
_eventManager = eventManager;
public uint Id { get; internal set; }
- public ITask? Task { get; internal set; }
+ public TaskData? Task { get; internal set; }
public bool Complete { get; internal set; }
{
switch (call)
{
- case RpcCalls.Close:
+ case RpcCalls.CloseMeeting:
{
if (!await ValidateHost(call, sender))
{
PlayerInfo.CurrentOutfit.HatId = hatId;
using var writer = Game.StartRpc(NetId, RpcCalls.SetHat);
- Rpc39SetHat.Serialize(writer, hatId);
+ Rpc39SetHatStr.Serialize(writer, hatId);
await Game.FinishRpcAsync(writer);
}
PlayerInfo.CurrentOutfit.PetId = petId;
using var writer = Game.StartRpc(NetId, RpcCalls.SetPet);
- Rpc41SetPet.Serialize(writer, petId);
+ Rpc41SetPetStr.Serialize(writer, petId);
await Game.FinishRpcAsync(writer);
}
PlayerInfo.CurrentOutfit.SkinId = skinId;
using var writer = Game.StartRpc(NetId, RpcCalls.SetSkin);
- Rpc40SetSkin.Serialize(writer, skinId);
+ Rpc40SetSkinStr.Serialize(writer, skinId);
await Game.FinishRpcAsync(writer);
}
return await HandleSetColor(sender, color);
}
- case RpcCalls.SetHat:
+ case RpcCalls.SetHatStr:
{
if (!await ValidateOwnership(call, sender))
{
return false;
}
- Rpc39SetHat.Deserialize(reader, out var hat);
+ Rpc39SetHatStr.Deserialize(reader, out var hat);
return true;
}
- case RpcCalls.SetSkin:
+ case RpcCalls.SetSkinStr:
{
if (!await ValidateOwnership(call, sender))
{
return false;
}
- Rpc40SetSkin.Deserialize(reader, out var skin);
+ Rpc40SetSkinStr.Deserialize(reader, out var skin);
return true;
}
- case RpcCalls.SetVisor:
+ case RpcCalls.SetVisorStr:
{
if (!await ValidateOwnership(call, sender))
{
return false;
}
- // Rpc42SetVistor.Deserialize(reader, out var visor);
+ Rpc42SetVisorStr.Deserialize(reader, out var visor);
return true;
}
- case RpcCalls.SetNamePlate:
+ case RpcCalls.SetNamePlateStr:
{
if (!await ValidateOwnership(call, sender))
{
return false;
}
- // Rpc43SetNamePlate.Deserialize(reader, out var namePlate);
+ Rpc43SetNamePlateStr.Deserialize(reader, out var namePlate);
return true;
}
return false;
}
- // Rpc38SetLevel.Deserialize(reader, out var level);
+ Rpc38SetLevel.Deserialize(reader, out var level);
return true;
}
break;
}
- case RpcCalls.SetPet:
+ case RpcCalls.SetPetStr:
{
if (!await ValidateOwnership(call, sender))
{
return false;
}
- Rpc41SetPet.Deserialize(reader, out var pet);
+ Rpc41SetPetStr.Deserialize(reader, out var pet);
return await HandleSetPet(sender, pet);
}
-using System;
using System.Collections.Generic;
using System.Numerics;
using Impostor.Api.Innersloth;
-using Impostor.Api.Innersloth.Maps;
using Impostor.Api.Net.Custom;
using Impostor.Api.Net.Inner.Objects.ShipStatus;
using Impostor.Server.Net.Inner.Objects.Systems;
{
internal class InnerAirshipStatus : InnerShipStatus, IInnerAirshipStatus
{
- public InnerAirshipStatus(ICustomMessageManager<ICustomRpc> customMessageManager, Game game) : base(customMessageManager, game)
+ public InnerAirshipStatus(ICustomMessageManager<ICustomRpc> customMessageManager, Game game) : base(customMessageManager, game, MapTypes.Airship)
{
}
- public override IMapData Data => IMapData.Maps[MapTypes.Airship];
-
- public override Dictionary<int, bool> Doors { get; } = new Dictionary<int, bool>(21);
-
- public override float SpawnRadius => throw new NotSupportedException();
-
- public override Vector2 InitialSpawnCenter => throw new NotSupportedException();
-
- public override Vector2 MeetingSpawnCenter => throw new NotSupportedException();
-
public Vector2 PreSpawnLocation { get; } = new Vector2(-25f, 40f);
public Vector2[] SpawnLocations { get; } =
--- /dev/null
+using System.Collections.Generic;
+using Impostor.Api.Innersloth;
+using Impostor.Api.Net.Custom;
+using Impostor.Server.Net.Inner.Objects.Systems;
+using Impostor.Server.Net.Inner.Objects.Systems.ShipStatus;
+using Impostor.Server.Net.State;
+
+namespace Impostor.Server.Net.Inner.Objects.ShipStatus
+{
+ internal class InnerFungleShipStatus : InnerShipStatus
+ {
+ public InnerFungleShipStatus(ICustomMessageManager<ICustomRpc> customMessageManager, Game game) : base(customMessageManager, game, MapTypes.Fungle)
+ {
+ }
+
+ protected override void AddSystems(Dictionary<SystemTypes, ISystemType> systems)
+ {
+ base.AddSystems(systems);
+
+ systems.Add(SystemTypes.Comms, new HudOverrideSystemType());
+ systems.Add(SystemTypes.Reactor, new ReactorSystemType());
+ systems.Add(SystemTypes.Doors, new DoorsSystemType(Doors));
+ // systems.Add(SystemTypes.MushroomMixupSabotage, );
+ }
+ }
+}
using System.Collections.Generic;
-using System.Numerics;
using Impostor.Api.Innersloth;
-using Impostor.Api.Innersloth.Maps;
using Impostor.Api.Net.Custom;
using Impostor.Api.Net.Inner.Objects.ShipStatus;
using Impostor.Server.Net.Inner.Objects.Systems;
{
internal class InnerMiraShipStatus : InnerShipStatus, IInnerMiraShipStatus
{
- public InnerMiraShipStatus(ICustomMessageManager<ICustomRpc> customMessageManager, Game game) : base(customMessageManager, game)
+ public InnerMiraShipStatus(ICustomMessageManager<ICustomRpc> customMessageManager, Game game) : base(customMessageManager, game, MapTypes.MiraHQ)
{
}
- public override IMapData Data => IMapData.Maps[MapTypes.MiraHQ];
-
- public override Dictionary<int, bool> Doors { get; } = new Dictionary<int, bool>(0);
-
- public override float SpawnRadius => 1.55f;
-
- public override Vector2 InitialSpawnCenter { get; } = new Vector2(-4.4f, 2.2f);
-
- public override Vector2 MeetingSpawnCenter { get; } = new Vector2(24.043f, 1.72f);
-
protected override void AddSystems(Dictionary<SystemTypes, ISystemType> systems)
{
base.AddSystems(systems);
using System.Collections.Generic;
using System.Numerics;
using Impostor.Api.Innersloth;
-using Impostor.Api.Innersloth.Maps;
using Impostor.Api.Net.Custom;
using Impostor.Api.Net.Inner.Objects.ShipStatus;
using Impostor.Server.Net.Inner.Objects.Systems;
{
internal class InnerPolusShipStatus : InnerShipStatus, IInnerPolusShipStatus
{
- public InnerPolusShipStatus(ICustomMessageManager<ICustomRpc> customMessageManager, Game game) : base(customMessageManager, game)
+ public InnerPolusShipStatus(ICustomMessageManager<ICustomRpc> customMessageManager, Game game) : base(customMessageManager, game, MapTypes.Polus)
{
}
- public override IMapData Data => IMapData.Maps[MapTypes.Polus];
-
- public override Dictionary<int, bool> Doors { get; } = new Dictionary<int, bool>(12);
-
- public override float SpawnRadius => 1f;
-
- public override Vector2 InitialSpawnCenter { get; } = new Vector2(16.64f, -2.46f);
-
- public override Vector2 MeetingSpawnCenter { get; } = new Vector2(17.4f, -16.286f);
-
- public Vector2 MeetingSpawnCenter2 { get; } = new Vector2(17.4f, -17.515f);
-
public override Vector2 GetSpawnLocation(InnerPlayerControl player, int numPlayers, bool initialSpawn)
{
if (initialSpawn)
var spawnId = player.PlayerId % 15;
if (player.PlayerId < halfPlayers)
{
- return this.MeetingSpawnCenter + (new Vector2(0.6f, 0) * spawnId);
+ return Data.MeetingSpawnCenter + (new Vector2(0.6f, 0) * spawnId);
}
else
{
- return this.MeetingSpawnCenter2 + (new Vector2(0.6f, 0) * (spawnId - halfPlayers));
+ return Data.MeetingSpawnCenter2 + (new Vector2(0.6f, 0) * (spawnId - halfPlayers));
}
}
{
private readonly Dictionary<SystemTypes, ISystemType> _systems = new Dictionary<SystemTypes, ISystemType>();
- protected InnerShipStatus(ICustomMessageManager<ICustomRpc> customMessageManager, Game game) : base(customMessageManager, game)
+ protected InnerShipStatus(ICustomMessageManager<ICustomRpc> customMessageManager, Game game, MapTypes mapType) : base(customMessageManager, game)
{
Components.Add(this);
- }
-
- public abstract IMapData Data { get; }
- public abstract Dictionary<int, bool> Doors { get; }
+ MapType = mapType;
+ Data = MapData.Maps[mapType];
+ Doors = new Dictionary<int, bool>(Data.Doors.Count);
+ }
- public abstract float SpawnRadius { get; }
+ public MapTypes MapType { get; }
- public abstract Vector2 InitialSpawnCenter { get; }
+ public MapData Data { get; }
- public abstract Vector2 MeetingSpawnCenter { get; }
+ public Dictionary<int, bool> Doors { get; }
internal override ValueTask OnSpawnAsync()
{
{
var vector = new Vector2(0, 1);
vector = Rotate(vector, (player.PlayerId - 1) * (360f / numPlayers));
- vector *= this.SpawnRadius;
- return (initialSpawn ? this.InitialSpawnCenter : this.MeetingSpawnCenter) + vector + new Vector2(0f, 0.3636f);
+ vector *= Data.SpawnRadius;
+ return (initialSpawn ? Data.InitialSpawnCenter : Data.MeetingSpawnCenter) + vector + new Vector2(0f, 0.3636f);
}
protected virtual void AddSystems(Dictionary<SystemTypes, ISystemType> systems)
using System.Collections.Generic;
-using System.Numerics;
using Impostor.Api.Innersloth;
-using Impostor.Api.Innersloth.Maps;
using Impostor.Api.Net.Custom;
using Impostor.Api.Net.Inner.Objects.ShipStatus;
using Impostor.Server.Net.Inner.Objects.Systems;
{
internal class InnerSkeldShipStatus : InnerShipStatus, IInnerSkeldShipStatus
{
- public InnerSkeldShipStatus(ICustomMessageManager<ICustomRpc> customMessageManager, Game game) : base(customMessageManager, game)
+ public InnerSkeldShipStatus(ICustomMessageManager<ICustomRpc> customMessageManager, Game game) : base(customMessageManager, game, MapTypes.Skeld)
{
}
- public override IMapData Data { get; } = IMapData.Maps[MapTypes.Skeld];
-
- public override Dictionary<int, bool> Doors { get; } = new Dictionary<int, bool>(13);
-
- public override float SpawnRadius => 1.6f;
-
- public override Vector2 InitialSpawnCenter { get; } = new Vector2(-0.72f, 0.62f);
-
- public override Vector2 MeetingSpawnCenter { get; } = new Vector2(-0.72f, 0.62f);
-
protected override void AddSystems(Dictionary<SystemTypes, ISystemType> systems)
{
base.AddSystems(systems);
/// </summary>
private const int CurrentClient = -3;
- private static readonly Type[] SpawnableObjects =
+ private static readonly Dictionary<uint, Type> SpawnableObjects = new()
{
- typeof(InnerSkeldShipStatus),
- typeof(InnerMeetingHud),
- typeof(InnerLobbyBehaviour),
- typeof(InnerGameData),
- typeof(InnerPlayerControl),
- typeof(InnerMiraShipStatus),
- typeof(InnerPolusShipStatus),
- typeof(InnerSkeldShipStatus), // April fools skeld
- typeof(InnerAirshipStatus),
- typeof(InnerHideAndSeekManager),
- typeof(InnerNormalGameManager),
+ [0] = typeof(InnerSkeldShipStatus),
+ [1] = typeof(InnerMeetingHud),
+ [2] = typeof(InnerLobbyBehaviour),
+ [3] = typeof(InnerGameData),
+ [4] = typeof(InnerPlayerControl),
+ [5] = typeof(InnerMiraShipStatus),
+ [6] = typeof(InnerPolusShipStatus),
+ [7] = typeof(InnerShipStatus),
+ [8] = typeof(InnerAirshipStatus),
+ [9] = typeof(InnerHideAndSeekManager),
+ [10] = typeof(InnerNormalGameManager),
+ [13] = typeof(InnerFungleShipStatus),
};
private readonly List<InnerNetObject> _allObjects = new List<InnerNetObject>();
}
var objectId = reader.ReadPackedUInt32();
- if (objectId < SpawnableObjects.Length)
+ if (SpawnableObjects.TryGetValue(objectId, out var spawnableObjectType))
{
- var innerNetObject = (InnerNetObject)ActivatorUtilities.CreateInstance(_serviceProvider, SpawnableObjects[objectId], this);
+ var innerNetObject = (InnerNetObject)ActivatorUtilities.CreateInstance(_serviceProvider, spawnableObjectType, this);
var ownerClientId = reader.ReadPackedInt32();
innerNetObject.SpawnFlags = (SpawnFlags)reader.ReadByte();
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Impostor.Benchmarks", "Impostor.Benchmarks\Impostor.Benchmarks.csproj", "{EA04E386-6CCB-4C52-8C82-64F32C7EB377}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Impostor.Api.Innersloth.Generator", "Impostor.Api.Innersloth.Generator\Impostor.Api.Innersloth.Generator.csproj", "{8B6C3AC5-E2B2-49F8-854D-22DFB4AB3D31}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
{EA04E386-6CCB-4C52-8C82-64F32C7EB377}.Release|Any CPU.Build.0 = Release|Any CPU
{EA04E386-6CCB-4C52-8C82-64F32C7EB377}.Release|x86.ActiveCfg = Release|Any CPU
{EA04E386-6CCB-4C52-8C82-64F32C7EB377}.Release|x86.Build.0 = Release|Any CPU
+ {8B6C3AC5-E2B2-49F8-854D-22DFB4AB3D31}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {8B6C3AC5-E2B2-49F8-854D-22DFB4AB3D31}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {8B6C3AC5-E2B2-49F8-854D-22DFB4AB3D31}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {8B6C3AC5-E2B2-49F8-854D-22DFB4AB3D31}.Debug|x86.Build.0 = Debug|Any CPU
+ {8B6C3AC5-E2B2-49F8-854D-22DFB4AB3D31}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {8B6C3AC5-E2B2-49F8-854D-22DFB4AB3D31}.Release|Any CPU.Build.0 = Release|Any CPU
+ {8B6C3AC5-E2B2-49F8-854D-22DFB4AB3D31}.Release|x86.ActiveCfg = Release|Any CPU
+ {8B6C3AC5-E2B2-49F8-854D-22DFB4AB3D31}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE