diff --git a/Robust.Client/Placement/PlacementManager.cs b/Robust.Client/Placement/PlacementManager.cs index 28d9aca7a..fff7a668d 100644 --- a/Robust.Client/Placement/PlacementManager.cs +++ b/Robust.Client/Placement/PlacementManager.cs @@ -19,6 +19,7 @@ using Robust.Shared.Prototypes; using Robust.Shared.Reflection; using Robust.Shared.Timing; using Robust.Shared.Utility; +using Robust.Shared.Log; namespace Robust.Client.Placement { @@ -470,14 +471,14 @@ namespace Robust.Client.Placement CurrentPermission = info; - if (!_modeDictionary.Any(pair => pair.Key.Equals(CurrentPermission.PlacementOption))) + if (!_modeDictionary.TryFirstOrNull(pair => pair.Key.Equals(CurrentPermission.PlacementOption), out KeyValuePair? placeMode)) { + Logger.LogS(LogLevel.Warning, nameof(PlacementManager), $"Invalid placement mode `{CurrentPermission.PlacementOption}`"); Clear(); return; } - var modeType = _modeDictionary.First(pair => pair.Key.Equals(CurrentPermission.PlacementOption)).Value; - CurrentMode = (PlacementMode) Activator.CreateInstance(modeType, this)!; + CurrentMode = (PlacementMode) Activator.CreateInstance(placeMode.Value.Value, this)!; if (hijack != null) { diff --git a/Robust.Shared/Prototypes/EntityPrototype.cs b/Robust.Shared/Prototypes/EntityPrototype.cs index 50ab57d29..01d6b3cc7 100644 --- a/Robust.Shared/Prototypes/EntityPrototype.cs +++ b/Robust.Shared/Prototypes/EntityPrototype.cs @@ -92,7 +92,8 @@ namespace Robust.Shared.Prototypes [DataField("noSpawn")] public bool NoSpawn { get; private set; } - [DataField("placement")] private EntityPlacementProperties PlacementProperties = new(); + [DataField("placement")] + private EntityPlacementProperties PlacementProperties = new(); /// /// The different mounting points on walls. (If any).