Esempio n. 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));
                }
            }
        }
Esempio n. 2
0
 public static void InitializePool()
 {
     for (int i = 0; i < Config.CacheSize; i++)
     {
         CachedClasses[i] = new StuckInRoom();
     }
 }
Esempio n. 3
0
        public static StuckInRoom SetPlayerStuck(Player player, DoorVariant door, PlayerUnstuck plugin)
        {
            for (int i = 0; i < Config.CacheSize; i++)
            {
                var c = CachedClasses[i];

                if (c.Coroutine.IsRunning)
                {
                    continue;
                }

                c.Initialize(player, door, plugin);
                return(c);
            }

            var createNew = new StuckInRoom();

            createNew.Initialize(player, door, plugin);
            return(createNew);
        }
Esempio n. 4
0
 public PlayerUnstuck()
 {
     StuckInRoom.InitializePool();
 }