Skip to content

Commit c47f6a6

Browse files
Fixed not hearing players through cameras and delayed damage application a frame
1 parent 90c7cbe commit c47f6a6

File tree

2 files changed

+18
-15
lines changed

2 files changed

+18
-15
lines changed

CameraSystem-LabAPI/EventHandlers.cs

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@ internal static void Register()
3838
Scp079Events.Pinging += OnPinging;
3939
Scp079Events.Recontaining += OnRecontaining;
4040

41-
// TODO: Make sure camera cannot do anything (opening doors/sending elevators may be possible)
4241
Scp079Events.BlackingOutRoom += OnPlayerEvent;
4342
Scp079Events.BlackingOutZone += OnPlayerEvent;
4443
Scp079Events.ChangingCamera += OnChangingCamera;
@@ -55,8 +54,8 @@ internal static void Register()
5554
PlayerEvents.Left += OnLeft;
5655
PlayerEvents.Dying += OnDying;
5756

58-
PlayerEvents.ReceivingVoiceMessage += OnVoiceChatting;
59-
PlayerEvents.SendingVoiceMessage += OnVoiceChatting;
57+
PlayerEvents.ReceivingVoiceMessage += OnReceivingVoiceChat;
58+
PlayerEvents.SendingVoiceMessage += OnSendingVoiceChat;
6059
}
6160

6261
internal static void Unregister()
@@ -79,8 +78,8 @@ internal static void Unregister()
7978
PlayerEvents.Left -= OnLeft;
8079
PlayerEvents.Dying -= OnDying;
8180

82-
PlayerEvents.ReceivingVoiceMessage -= OnVoiceChatting;
83-
PlayerEvents.SendingVoiceMessage -= OnVoiceChatting;
81+
PlayerEvents.ReceivingVoiceMessage -= OnReceivingVoiceChat;
82+
PlayerEvents.SendingVoiceMessage -= OnSendingVoiceChat;
8483
}
8584

8685
private static void OnMapGenerated(MapGeneratedEventArgs _) => SpawnWorkstations();
@@ -228,13 +227,19 @@ private static void OnLeft(PlayerLeftEventArgs ev)
228227
CameraManager.Instance.ForceDisconnect(ev.Player);
229228
}
230229

231-
private static void OnVoiceChatting(IPlayerEvent ev)
230+
private static void OnSendingVoiceChat(PlayerSendingVoiceMessageEventArgs ev)
232231
{
233-
if (ev is IVoiceMessageEvent voiceMessageEvent and ICancellableEvent cancellableEvent &&
234-
CameraManager.Instance.IsWatching(ev.Player) &&
235-
voiceMessageEvent.Message.Channel == VoiceChatChannel.ScpChat)
232+
if (CameraManager.Instance.IsWatching(ev.Player))
233+
{
234+
ev.IsAllowed = false;
235+
}
236+
}
237+
238+
private static void OnReceivingVoiceChat(PlayerReceivingVoiceMessageEventArgs ev)
239+
{
240+
if (ev.Message.Channel == VoiceChatChannel.ScpChat && CameraManager.Instance.IsWatching(ev.Player))
236241
{
237-
cancellableEvent.IsAllowed = false;
242+
ev.IsAllowed = false;
238243
}
239244
}
240245

CameraSystem-LabAPI/Managers/CameraManager.cs

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,7 @@ internal void Connect(Player player)
3636
Watcher watcher = new(player);
3737
_watchers.Add(watcher);
3838

39-
player.SetRole(RoleTypeId.Scp079, flags: RoleSpawnFlags.None);
40-
player.CurrentItem = null;
41-
39+
player.SetRole(RoleTypeId.Scp079);
4240
player.SendHint(CameraSystem.Instance.Config.Translations.ConnectionSuccessMessage, 7);
4341
}
4442

@@ -48,7 +46,7 @@ internal void Disconnect(Player player, DamageHandlerBase damageHandler = null)
4846
{
4947
return;
5048
}
51-
49+
5250
try
5351
{
5452
watcher.Player.SetRole(watcher.PlayerSnapshot.Role, flags: RoleSpawnFlags.None);
@@ -70,7 +68,7 @@ internal void Disconnect(Player player, DamageHandlerBase damageHandler = null)
7068

7169
if (damageHandler is not null && player.IsAlive)
7270
{
73-
watcher.Player.Damage(damageHandler);
71+
Timing.CallDelayed(Timing.WaitForOneFrame, () => { watcher.Player.Damage(damageHandler); });
7472
}
7573

7674
watcher.Player.SendHint(CameraSystem.Instance.Config.Translations.DisconnectionMessage, 7);

0 commit comments

Comments
 (0)