Fix KeyNotFoundException for nonexistent vents (#413)

Some mods add extra vents that don't yet exist, this commit checks if a
given vent exists and if it doesn't, throw an AC violation instead of
disconnecting the player

One downside is that the Enter/ExitVent events are no longer called, but
this would require the vent in that event to become nullable
This commit is contained in:
miniduikboot authored and GitHub committed 2021-05-17 17:13:54 +00:00
1 parent adc0e6fe9b
commit a13fee108f
1 file changed
+10 -1
@@ -1,6 +1,7 @@
using System;
using System.Threading.Tasks;
using Impostor.Api.Events.Managers;
using Impostor.Api.Innersloth;
using Impostor.Api.Net;
using Impostor.Api.Net.Custom;
using Impostor.Api.Net.Inner;
@@ -65,7 +66,15 @@ namespace Impostor.Server.Net.Inner.Objects.Components
throw new ArgumentOutOfRangeException(nameof(call), call, null);
}
var vent = Game.GameNet.ShipStatus!.Data.Vents[ventId];
if (!Game.GameNet.ShipStatus!.Data.Vents.TryGetValue(ventId, out var vent))
{
if (await sender.Client.ReportCheatAsync(call, "Client interacted with nonexistent vent"))
{
return false;
}
break;
}
switch (call)
{