예제 #1
0
        private void Player_InteractingDoor(Exiled.Events.EventArgs.InteractingDoorEventArgs ev)
        {
            var door     = ev.Door;
            var doorType = door.Type();
            var player   = ev.Player;

            // If door closed and access denied and they are an SCP and they aren't already trying to escape.
            if (door.IsConsideredOpen() || ev.IsAllowed || (Config.SCPOnly && (!Config.SCPOnly || player.Team != Team.SCP)) ||
                player.Role == RoleType.Scp079 || player.Role == RoleType.Scp106 ||
                ScpTryingToEscape.ContainsKey(doorType))
            {
                return;
            }

            if (_fixedPoints.TryGetValue(doorType, out var point))
            {
                var roomCheckPos         = point.Position;
                var playerDistanceToRoom = Vector3.Distance(roomCheckPos, player.Position);
                var doorDistanceToRoom   = Vector3.Distance(roomCheckPos, door.transform.position);

                if (playerDistanceToRoom < doorDistanceToRoom)
                {
                    ScpTryingToEscape.Add(doorType, StuckInRoom.SetPlayerStuck(ev.Player, door, this));
                }
            }
        }
예제 #2
0
 private void Player_InteractingDoor(Exiled.Events.EventArgs.InteractingDoorEventArgs ev)
 {
     if (!RecorderCore.isRecording)
     {
         return;
     }
     RecorderCore.OnReceiveEvent(new DoorData()
     {
         State    = !ev.Door.TargetState,
         Position = ev.Door.transform.position.GetData()
     });
 }