Example #1
0
        private static bool Prefix(PlayerInteract __instance)
        {
            if (!__instance._playerInteractRateLimit.CanExecute(true) || (__instance._hc.CufferId > 0 && !PlayerInteract.CanDisarmedInteract))
            {
                return(false);
            }

            GameObject gameObject = GameObject.Find("OutsitePanelScript");

            if (!__instance.ChckDis(gameObject.transform.position))
            {
                return(false);
            }

            var ev = new ActivatingWarheadPanelEventArgs(API.Features.Player.Get(__instance.gameObject), new List <string>()
            {
                "CONT_LVL_3"
            });

            Player.OnActivatingWarheadPanel(ev);

            if (ev.IsAllowed && __instance._inv.GetItemByID(__instance._inv.curItem).permissions.Intersect(ev.Permissions).Any())
            {
                gameObject.GetComponentInParent <AlphaWarheadOutsitePanel>().NetworkkeycardEntered = true;
                __instance.OnInteract();
            }

            return(false);
        }
 public async void OnActivatingWarheadPanel(ActivatingWarheadPanelEventArgs ev)
 {
     if (Instance.Config.EventsToLog.PlayerActivatingWarheadPanel && (!ev.Player.DoNotTrack || !Instance.Config.ShouldRespectDoNotTrack))
     {
         await Network.SendAsync(new RemoteCommand("log", "gameEvents", string.Format(Language.AccessedWarhead, ev.Player.Nickname, Instance.Config.ShouldLogUserIds ? ev.Player.UserId : Language.Redacted, ev.Player.Role))).ConfigureAwait(false);
     }
 }
Example #3
0
        public void OnOutsitePanelAccess(ActivatingWarheadPanelEventArgs ev)
        {
            if (!RemoteKeycard.instance.PatchedSuccessfully)
            {
                return;
            }

            if (!CanInteract(ev.Player) || !RKConfig.HandleOutsidePanelAccess)
            {
                return;
            }

            const Keycard.Permissions PANEL_PERMISSION = Keycard.Permissions.ContainmentLevelThree;

            RemoteKeycard.Debug($"Player {ev.Player.Nickname} ({ev.Player.UserId}) is trying to access the outside panel");
            RemoteKeycard.Debug($"Outsite panel permissions: {PANEL_PERMISSION}");

            if (ev.IsAllowed)
            {
                RemoteKeycard.Debug("Outsite panel access is allowed");
                return;
            }

            RemoteKeycard.Debug("Further processing is allowed...");

            var pInv = ev.Player.Inventory.items;

            ev.IsAllowed = Handle(pInv, PANEL_PERMISSION);
        }
        private static bool Prefix(PlayerInteract __instance)
        {
            try
            {
                if (!__instance._playerInteractRateLimit.CanExecute() ||
                    (__instance._hc.CufferId > 0 && !PlayerInteract.CanDisarmedInteract))
                {
                    return(false);
                }

                GameObject gameObject = GameObject.Find("OutsitePanelScript");
                if (!__instance.ChckDis(gameObject.transform.position))
                {
                    return(false);
                }

                var itemById = __instance._inv.GetItemByID(__instance._inv.curItem);
                if (!__instance._sr.BypassMode && itemById == null)
                {
                    return(false);
                }

                const string PANEL_PERM = "CONT_LVL_3";

                // Deprecated
                var list = ListPool <string> .Shared.Rent();

                list.Add(PANEL_PERM);

                var ev = new ActivatingWarheadPanelEventArgs(
                    API.Features.Player.Get(__instance.gameObject),
                    list,
                    __instance._sr.BypassMode || itemById.permissions.Contains(PANEL_PERM));

                Player.OnActivatingWarheadPanel(ev);
                ListPool <string> .Shared.Return(list);

                if (ev.IsAllowed)
                {
                    gameObject.GetComponentInParent <AlphaWarheadOutsitePanel>().NetworkkeycardEntered = true;
                    __instance.OnInteract();
                }

                return(false);
            }
            catch (Exception exception)
            {
                API.Features.Log.Error($"{typeof(ActivatingWarheadPanel).FullName}.{nameof(Prefix)}:\n{exception}");

                return(true);
            }
        }
Example #5
0
        /*internal void Interacted(InteractedEventArgs ev)
         * {
         *  //I don't know why this is a thing. If somethin is missing I will implement this
         * }*/

        /*internal void SpawningRagdoll(SpawningRagdollEventArgs ev)
         * {
         *  //It's not needed because there is Died
         * }*/

        internal void ActivatingWarheadPanel(ActivatingWarheadPanelEventArgs ev)
        {
            if (Plugin.Instance.Config.ActivatingWarheadPanel == "")
            {
                return;
            }
            string message = Plugin.Instance.Config.ActivatingWarheadPanel.Replace("%player%", ev.Player.ToString());


            if (Plugin.Instance.Config.debug_to_console)
            {
                Log.Debug(message: "[ " + Plugin.Instance.Config.player_name + "] " + message);
            }
            Plugin.sendWebHook(Plugin.Instance.Config.player_url, message, Plugin.Instance.Config.player_name);
        }
Example #6
0
        public async void OnWarheadPanelActivating(ActivatingWarheadPanelEventArgs ev)
        {
            if (ev.IsAllowed)
            {
                StringBuilder builder = new StringBuilder();
                builder.AppendLine("**Activating Warhead Panel**");
                builder.AppendLine($"Name: {ev.Player.Nickname} ({ev.Player.UserId})");

                await _privateWebhook.ExecuteWebhook(
                    builder.ToString(),
                    "SCP-Bot",
                    false
                    );
            }
        }
Example #7
0
        private static bool Prefix(PlayerInteract __instance)
        {
            try
            {
                if (!__instance._playerInteractRateLimit.CanExecute() ||
                    (__instance._hc.CufferId > 0 && !PlayerInteract.CanDisarmedInteract))
                {
                    return(false);
                }

                GameObject gameObject = GameObject.Find("OutsitePanelScript");

                if (!__instance.ChckDis(gameObject.transform.position))
                {
                    return(false);
                }

                Item itemById = __instance._inv.GetItemByID(__instance._inv.curItem);

                if (!__instance._sr.BypassMode && itemById == null)
                {
                    return(false);
                }

                var list = ListPool <string> .Shared.Rent();

                list.Add("CONT_LVL_3");
                var ev = new ActivatingWarheadPanelEventArgs(API.Features.Player.Get(__instance.gameObject), list);

                Player.OnActivatingWarheadPanel(ev);

                if (ev.IsAllowed && itemById.permissions.Intersect(ev.Permissions).Any())
                {
                    gameObject.GetComponentInParent <AlphaWarheadOutsitePanel>().NetworkkeycardEntered = true;
                    __instance.OnInteract();
                }

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

                return(false);
            }
            catch (Exception exception)
            {
                API.Features.Log.Error($"Exiled.Events.Patches.Events.Player.ActivatingWarheadPanel: {exception}\n{exception.StackTrace}");

                return(true);
            }
        }
        public void OnActivatingWarheadPanel(ActivatingWarheadPanelEventArgs ev)
        {
            ev.IsAllowed = false; // Due to workaround, reset allowed

            if (ev.Player.IsBypassModeEnabled)
            {
                ev.IsAllowed = true;
                return;
            }

            if (ev.Player.Side == Side.Scp)
            {
                return;
            }

            ev.IsAllowed = HasPermission(ev.Player, "CONT_LVL_3");
        }
Example #9
0
        private static bool Prefix(PlayerInteract __instance)
        {
            try
            {
                if (!__instance._playerInteractRateLimit.CanExecute() ||
                    (__instance._hc.CufferId > 0 && !PlayerInteract.CanDisarmedInteract))
                {
                    return(false);
                }

                GameObject gameObject = GameObject.Find("OutsitePanelScript");

                if (!__instance.ChckDis(gameObject.transform.position))
                {
                    return(false);
                }

                Item itemById = __instance._inv.GetItemByID(__instance._inv.curItem);

                if (!__instance._sr.BypassMode &&
                    (itemById == null || !Enumerable.Contains(itemById.permissions, "CONT_LVL_3")))
                {
                    return(false);
                }

                var ev = new ActivatingWarheadPanelEventArgs(API.Features.Player.Get(__instance.gameObject), new List <string> {
                    "CONT_LVL_3"
                });

                Handlers.Player.OnActivatingWarheadPanel(ev);

                gameObject.GetComponentInParent <AlphaWarheadOutsitePanel>().NetworkkeycardEntered = true;
                __instance.OnInteract();

                return(false);
            }
            catch (Exception e)
            {
                Exiled.API.Features.Log.Error($"Exiled.Events.Patches.Events.Player.ActivatingWarheadPanel: {e}\n{e.StackTrace}");

                return(true);
            }
        }
Example #10
0
 /// <summary>
 /// Invoked before activating the warhead panel.
 /// </summary>
 /// <param name="ev">The <see cref="ActivatingWarheadPanelEventArgs"/> instance.</param>
 public static void OnActivatingWarheadPanel(ActivatingWarheadPanelEventArgs ev) => ActivatingWarheadPanel.InvokeSafely(ev);
Example #11
0
 internal void OnActivateWarheadPanel(ActivatingWarheadPanelEventArgs ev)
 {
 }
Example #12
0
 public void OnActivatingWarheadPanel(ActivatingWarheadPanelEventArgs ev)
 {
     CheckForEvent("OnActivatingWarheadPanel", true, false, ev.Player);
 }