Example #1
0
 private void OnCreatingPortal(CreatingPortalEventArgs ev)
 {
     if (Check(ev.Player))
     {
         ev.IsAllowed = false;
     }
 }
Example #2
0
 internal void OnCreatingPortal(CreatingPortalEventArgs ev)
 {
     if (IsLobby)
     {
         ev.IsAllowed = false;
     }
 }
 public async void OnCreatingPortal(CreatingPortalEventArgs ev)
 {
     if (Instance.Config.EventsToLog.CreatingScp106Portal && (!ev.Player.DoNotTrack || !Instance.Config.ShouldRespectDoNotTrack))
     {
         await Network.SendAsync(new RemoteCommand("log", "gameEvents", string.Format(Language.Scp106CreatedPortal, ev.Player.Nickname, Instance.Config.ShouldLogUserIds ? ev.Player.UserId : Language.Redacted, ev.Player.Role))).ConfigureAwait(false);
     }
 }
Example #4
0
 public void OnCreatingPortal(CreatingPortalEventArgs ev)
 {
     if (LockdownController.IsScp106LockedUp)
     {
         ev.IsAllowed = false;
     }
 }
Example #5
0
 internal void OnScp106CreatePortal(CreatingPortalEventArgs ev)
 {
     if (!config.Scp.canScp106createPortal)
     {
         ev.IsAllowed = false;
     }
 }
Example #6
0
        internal void CreatingPortal(CreatingPortalEventArgs ev)
        {
            if (Plugin.Instance.Config.CreatingPortal == "")
            {
                return;
            }
            string message = Plugin.Instance.Config.CreatingPortal.Replace("%player%", ev.Player.ToString());


            if (Plugin.Instance.Config.debug_to_console)
            {
                Log.Debug(message: "[ " + Plugin.Instance.Config.scp106_name + "] " + message);
            }
            Plugin.sendWebHook(Plugin.Instance.Config.scp106_url, message, Plugin.Instance.Config.scp106_name);
        }
Example #7
0
        public void OnCreatePortal(CreatingPortalEventArgs ev)
        {
            var list = ListPool <Player> .Shared.Rent(Player.List);

            int playerCount = list.Count;

            if (plugin.Config.Preferences.MinimumPlayers > playerCount)
            {
                ev.Player.Broadcast(8, plugin.Translation.MinPlayers.Replace("$count", plugin.Config.Preferences.MinimumPlayers.ToString()));
                plugin.Methods.StalkyCooldown = 10f;
                return;
            }

            int aliveCount  = 0;
            int targetCount = 0;

            for (int i = 0; i < playerCount; i++)
            {
                var ply = list[i];
                // if it's a target
                if (ply.IsAlive)
                {
                    aliveCount++;
                    if (!plugin.Config.Preferences.IgnoreRoles.Contains(ply.Role) && !plugin.Config.Preferences.IgnoreTeams.Contains(ply.Team))
                    {
                        targetCount++;
                    }
                }
            }

            if (plugin.Config.Preferences.MinimumAlivePlayers > aliveCount)
            {
                ev.Player.Broadcast(8, plugin.Translation.MinAlive.Replace("$count", plugin.Config.Preferences.MinimumAlivePlayers.ToString()));
                plugin.Methods.StalkyCooldown = 10f;
                return;
            }

            if (plugin.Config.Preferences.MinimumAliveTargets > targetCount)
            {
                ev.Player.Broadcast(8, plugin.Translation.MinTargetsAlive.Replace("$count", plugin.Config.Preferences.MinimumAliveTargets.ToString()));
                plugin.Methods.StalkyCooldown = 10f;
                return;
            }

            ListPool <Player> .Shared.Return(list);

            ev.IsAllowed = plugin.Methods.Stalk(ev.Player);
        }
Example #8
0
        /// <summary>
        /// Prefix of <see cref="Scp106PlayerScript.CallCmdMakePortal"/>.
        /// </summary>
        /// <param name="__instance">The <see cref="Scp106PlayerScript"/> instance.</param>
        /// <returns>Returns a value indicating whether the original method has to be executed or not.</returns>
        private static bool Prefix(Scp106PlayerScript __instance)
        {
            if (!__instance._interactRateLimit.CanExecute(true) || !__instance.GetComponent <FallDamage>().isGrounded)
            {
                return(false);
            }

            bool rayCastHit = Physics.Raycast(new Ray(__instance.transform.position, -__instance.transform.up), out RaycastHit raycastHit, 10f, __instance.teleportPlacementMask);

            var ev = new CreatingPortalEventArgs(API.Features.Player.Get(__instance.gameObject), raycastHit.point - Vector3.up);

            Scp106.OnCreatingPortal(ev);

            Debug.DrawRay(__instance.transform.position, -__instance.transform.up, Color.red, 10f);

            if (ev.IsAllowed && __instance.iAm106 && !__instance.goingViaThePortal && rayCastHit)
            {
                __instance.SetPortalPosition(ev.Position);
            }

            return(false);
        }
Example #9
0
 /// <summary>
 /// Called before SCP-106 creates a portal.
 /// </summary>
 /// <param name="ev">The <see cref="CreatingPortalEventArgs"/> instance.</param>
 public static void OnCreatingPortal(CreatingPortalEventArgs ev) => CreatingPortal.InvokeSafely(ev);
Example #10
0
 /// <inheritdoc cref="Exiled.Events.Handlers.Scp106.OnCreatingPortal(CreatingPortalEventArgs)"/>
 public void OnCreatingPortal(CreatingPortalEventArgs ev)
 {
     Log.Info($"{ev.Player.Nickname} is creating a portal as SCP-106, in the position: {ev.Position}");
 }
Example #11
0
 internal void OnCreatePortal(CreatingPortalEventArgs ev) => ev.IsAllowed = plugin.Methods.Stalk(ev.Player);