public static bool Prefix(Scp096PlayerScript __instance, float amount)
        {
            try
            {
                if (EventPlugin.Scp096PatchDisable)
                {
                    return(true);
                }

                __instance._rageProgress += amount;
                if (__instance._rageProgress <
                    (double)__instance.rageCurve.Evaluate(Mathf.Min(PlayerManager.players.Count, 20)))
                {
                    return(false);
                }
                bool allow = true;
                Events.InvokeScp096Enrage(__instance, ref allow);
                if (allow == false)
                {
                    return(false);
                }
                __instance.Networkenraged = Scp096PlayerScript.RageState.Panic;
                __instance._rageProgress  = 15f;
                __instance.Invoke("StartRage", 5f);

                return(false);
            }
            catch (Exception e)
            {
                Log.Error($"SCP-096 Enrage event: {e}");
                return(true);
            }
        }
    private void CmdOpenDoor(GameObject doorID)
    {
        bool flag      = false;
        Door component = doorID.GetComponent <Door>();

        if (component.buttons.Count == 0)
        {
            flag = this.ChckDis(doorID.transform.position);
        }
        if (!flag)
        {
            foreach (GameObject gameObject in component.buttons)
            {
                if (flag = this.ChckDis(gameObject.transform.position))
                {
                    break;
                }
            }
        }
        if (flag)
        {
            Scp096PlayerScript component2 = base.GetComponent <Scp096PlayerScript>();
            if (component.destroyedPrefab != null && (!component.isOpen || component.curCooldown > 0f) && component2.iAm096 && component2.enraged == Scp096PlayerScript.RageState.Enraged)
            {
                component.DestroyDoor(true);
                return;
            }
            if (component.permissionLevel.ToUpper() == "CHCKPOINT_ACC" && base.GetComponent <CharacterClassManager>().klasy[base.GetComponent <CharacterClassManager>().curClass].team == Team.SCP)
            {
                component.ChangeState();
                return;
            }
            try
            {
                if (string.IsNullOrEmpty(component.permissionLevel))
                {
                    component.ChangeState();
                }
                else
                {
                    foreach (string a in this.inv.availableItems[this.inv.curItem].permissions)
                    {
                        if (a == component.permissionLevel)
                        {
                            component.ChangeState();
                            return;
                        }
                    }
                    this.CallRpcDenied(doorID);
                }
            }
            catch
            {
                this.CallRpcDenied(doorID);
            }
        }
    }
Exemple #3
0
        static bool Prefix(Scp096PlayerScript __instance, ref Scp096PlayerScript.RageState b)
        {
            Player096EnrageEvent ev = new Player096EnrageEvent();

            ev.Player       = new SmodPlayer(__instance.gameObject);
            ev.RageProgress = 1f;
            ev.Script       = __instance;
            ev.EnrageState  = (EnrageState)((int)b);
            EventManager.Manager.HandleEvent <IEventHandler096Enrage>(ev);
            __instance.rageProgress = ev.RageProgress;
            b = (Scp096PlayerScript.RageState)((int)ev.EnrageState);

            return(ev.AllowEnrage);
        }
 private void CmdShoot(string hitboxid, GameObject target, Vector3 hit_point, Vector3 hit_normal, string itemname)
 {
     if (this.curWeapon < 0)
     {
         return;
     }
     if (this.servercd == 0f)
     {
         this.CallRpcSyncAudio(this.weapons[this.curWeapon].shootAudio_aac, false);
         this.CallRpcSyncAnim("Shoot");
         Scp096PlayerScript instance = Scp096PlayerScript.instance;
         this.servercd = 1f / this.weapons[this.curWeapon].fireRate * 0.9f;
         if (!string.IsNullOrEmpty(hitboxid))
         {
             if (this.GetShootPermission(target.GetComponent <CharacterClassManager>()))
             {
                 float num = this.weapons[this.curWeapon].damageOverDistance.Evaluate(Vector3.Distance((!TutorialManager.status) ? base.GetComponent <PlyMovementSync>().position : base.transform.position, target.transform.position));
                 if (hitboxid == "LEG")
                 {
                     num *= this.weapons[this.curWeapon].legDamageMultipiler;
                 }
                 if (hitboxid == "BODY")
                 {
                     num *= this.weapons[this.curWeapon].bodyDamageMultipiler;
                 }
                 if (hitboxid == "HEAD")
                 {
                     num *= this.weapons[this.curWeapon].headDamageMultipiler;
                 }
                 if (hitboxid == "SCP106")
                 {
                     num *= 0.1f;
                 }
                 base.GetComponent <PlayerStats>().HurtPlayer(new PlayerStats.HitInfo(num, "Gunman", "Weapon:" + this.curWeapon), target);
             }
         }
         else
         {
             this.CallRpcMakeHole(this.curWeapon, hit_point, Quaternion.FromToRotation(Vector3.up, hit_normal), itemname);
         }
         this.inv.items.ModifyDuration(this.curItem, this.inv.items[this.curItem].durability - 1f);
     }
     else
     {
         MonoBehaviour.print("Shot was too fast!");
     }
 }
        public static void InvokeScp096Calm(Scp096PlayerScript script, ref bool allow)
        {
            if (Scp096CalmEvent == null)
            {
                return;
            }

            Scp096CalmEvent ev = new Scp096CalmEvent()
            {
                Player = script.gameObject.GetPlayer(),
                Script = script,
                Allow  = allow
            };

            Scp096CalmEvent.InvokeSafely(ev);

            allow = ev.Allow;
        }
Exemple #6
0
        public static void InvokeScp096Calm(Scp096PlayerScript script, ref bool allow)
        {
            Scp096Calm scp096Calm = Scp096CalmEvent;

            if (scp096Calm == null)
            {
                return;
            }

            Scp096CalmEvent ev = new Scp096CalmEvent()
            {
                Player = Player.GetPlayer(script.gameObject),
                Script = script,
                Allow  = allow
            };

            scp096Calm?.Invoke(ref ev);
            allow = ev.Allow;
        }
Exemple #7
0
        public static bool Prefix(Scp096PlayerScript __instance)
        {
            if (!Configs.scp096_high_sensitive)
            {
                return(true);
            }

            foreach (var player in PlayerManager.players)
            {
                ReferenceHub hubs = ReferenceHub.GetHub(player);
                if (!hubs.characterClassManager.Scp173.SameClass &&
                    hubs.characterClassManager.Scp173.LookFor173(__instance.gameObject, true) &&
                    __instance._ccm.Scp173.LookFor173(player, false))
                {
                    __instance.IncreaseRage(Time.fixedDeltaTime);
                }
            }
            return(false);
        }
        public static bool Prefix(Scp096PlayerScript __instance)
        {
            try
            {
                if (EventPlugin.Scp096PatchDisable)
                {
                    return(true);
                }

                bool allow = true;
                Events.InvokeScp096Calm(__instance, ref allow);
                return(allow);
            }
            catch (Exception e)
            {
                Log.Error($"SCP-096 Calm event: {e}");
                return(true);
            }
        }
Exemple #9
0
        public static bool Prefix(Scp096PlayerScript __instance)
        {
            if (__instance._processLookingQueue.IsEmpty())
            {
                foreach (GameObject player in PlayerManager.players)
                {
                    __instance._processLookingQueue.Enqueue(player);
                }
            }
            else
            {
                GameObject player = __instance._processLookingQueue.Dequeue();
                if (player == null || !ReferenceHub.GetHub(player).characterClassManager.IsHuman() || player.GetComponent <FlashEffect>().blinded)
                {
                    return(false);
                }
                Transform transform = player.GetComponent <Scp096PlayerScript>().camera.transform;
                float     num       = __instance.lookingTolerance.Evaluate(Vector3.Distance(transform.position, __instance.camera.transform.position));
                Vector3   vector3;
                if (num >= 0.75)
                {
                    Vector3 forward = transform.forward;
                    vector3 = transform.position - __instance.camera.transform.position;
                    Vector3 normalized = vector3.normalized;
                    if (Vector3.Dot(forward, normalized) >= -(double)num)
                    {
                        return(false);
                    }
                }
                Vector3 position = transform.transform.position;
                vector3 = __instance.camera.transform.position - transform.position;
                Vector3 normalized1 = vector3.normalized;
                int     layerMask   = __instance.layerMask;
                if (!Physics.Raycast(position, normalized1, out RaycastHit raycastHit, (__instance.gameObject.transform.position.y > 500f ? Plugin.MaxTriggerRangeSurface : Plugin.MaxTriggerRange), layerMask) || (raycastHit.collider.gameObject.layer != 24 || !raycastHit.collider.GetComponentInParent <Scp096PlayerScript>() == __instance))
                {
                    return(false);
                }
                __instance.IncreaseRage(Time.fixedDeltaTime);
            }

            return(false);
        }
Exemple #10
0
        public static bool Prefix(PlayerPositionManager __instance)
        {
            try
            {
                List <GameObject> players = PlayerManager.players;
                __instance.usedData = players.Count;
                if (__instance.receivedData == null || __instance.receivedData.Length < __instance.usedData)
                {
                    __instance.receivedData = new PlayerPositionData[__instance.usedData * 2];
                }
                for (int index = 0; index < __instance.usedData; ++index)
                {
                    __instance.receivedData[index] = new PlayerPositionData(players[index]);
                }
                if (__instance.transmitBuffer == null || __instance.transmitBuffer.Length < __instance.usedData)
                {
                    __instance.transmitBuffer = new PlayerPositionData[__instance.usedData * 2];
                }
                foreach (GameObject gameObject in players)
                {
                    CharacterClassManager component1 = gameObject.GetComponent <CharacterClassManager>();
                    Array.Copy(__instance.receivedData, __instance.transmitBuffer, __instance.usedData);

                    if (component1.CurClass == RoleType.Scp096 || component1.CurClass == RoleType.Scp173)
                    {
                        for (int i = 0; i < __instance.usedData; i++)
                        {
                            ReferenceHub hub = Plugin.GetPlayer(__instance.transmitBuffer[i].playerID.ToString());
                            if (hub.characterClassManager.CurClass != RoleType.Tutorial)
                            {
                                continue;
                            }
                            Scp049PlayerScript script   = hub.GetComponent <Scp049PlayerScript>();
                            Vector3            fwd      = script.plyCam.transform.forward;
                            Vector3            pos      = script.gameObject.transform.position;
                            Vector3            position = component1.gameObject.transform.position;
                            float angle = Vector3.Angle(fwd,
                                                        (pos - position).normalized);
                            Vector3    dir = (pos - position).normalized;
                            Quaternion rot = Quaternion.LookRotation(dir);
                            if (angle <= 80f)
                            {
                                __instance.transmitBuffer[i] = new PlayerPositionData(__instance.transmitBuffer[i].position, Quaternion.Inverse(rot).y, __instance.transmitBuffer[i].playerID, __instance.transmitBuffer[i].uses268);
                            }
                        }
                    }

                    if (component1.CurClass.Is939())
                    {
                        for (int index = 0; index < __instance.usedData; ++index)
                        {
                            if (__instance.transmitBuffer[index].position.y < 800.0)
                            {
                                CharacterClassManager component2 = players[index].GetComponent <CharacterClassManager>();
                                if (component2.Classes.SafeGet(component2.CurClass).team != Team.SCP &&
                                    component2.Classes.SafeGet(component2.CurClass).team != Team.RIP && !players[index]
                                    .GetComponent <Scp939_VisionController>()
                                    .CanSee(component1.GetComponent <Scp939PlayerScript>()))
                                {
                                    __instance.transmitBuffer[index] = new PlayerPositionData(Vector3.up * 6000f, 0.0f,
                                                                                              __instance.transmitBuffer[index].playerID);
                                }
                            }
                        }
                    }
                    else if (component1.CurClass == RoleType.Scp096)
                    {
                        Scp096PlayerScript script = component1.GetComponent <Scp096PlayerScript>();
                        if (script.Networkenraged == Scp096PlayerScript.RageState.Enraged || script.Networkenraged == Scp096PlayerScript.RageState.Panic)
                        {
                            for (int i = 0; i < __instance.usedData; i++)
                            {
                                if (!Plugin.Scp096Targets.Contains(__instance.transmitBuffer[i].playerID))
                                {
                                    __instance.transmitBuffer[i] = new PlayerPositionData(Vector3.up * 6000f, 0f, __instance.transmitBuffer[i].playerID);
                                }
                            }
                        }
                    }
                    else if (component1.CurClass != RoleType.Scp079 && component1.CurClass != RoleType.Spectator)
                    {
                        for (int index = 0; index < __instance.usedData; ++index)
                        {
                            if (__instance.transmitBuffer[index].uses268 || EXILED.EventPlugin.GhostedIds.Contains(__instance.transmitBuffer[index].playerID))
                            {
                                __instance.transmitBuffer[index] = new PlayerPositionData(Vector3.up * 6000f, 0.0f,
                                                                                          __instance.transmitBuffer[index].playerID);
                            }
                        }
                    }

                    NetworkConnection networkConnection = component1.netIdentity.isLocalPlayer
                                                ? NetworkServer.localConnection
                                                : component1.netIdentity.connectionToClient;
                    if (__instance.usedData <= 20)
                    {
                        networkConnection.Send(
                            new PlayerPositionManager.PositionMessage(__instance.transmitBuffer,
                                                                      (byte)__instance.usedData, 0), 1);
                    }
                    else
                    {
                        byte part;
                        for (part = (byte)0; (int)part < __instance.usedData / 20; ++part)
                        {
                            networkConnection.Send(
                                new PlayerPositionManager.PositionMessage(__instance.transmitBuffer, 20, part),
                                1);
                        }
                        byte count = (byte)(__instance.usedData % (part * 20));
                        if (count > 0)
                        {
                            networkConnection.Send(
                                new PlayerPositionManager.PositionMessage(__instance.transmitBuffer, count, part), 1);
                        }
                    }
                }

                return(false);
            }
            catch (Exception e)
            {
                Plugin.Info($"TransmitData Error. {e}");
                return(true);
            }
        }
        public static bool Prefix(PlayerInteract __instance, GameObject doorId)
        {
            if (EventPlugin.DoorInteractionEventPatchDisable)
            {
                return(true);
            }

            try
            {
                bool allow = true;
                if (!__instance._playerInteractRateLimit.CanExecute() ||
                    __instance._hc.CufferId > 0 && !__instance.CanDisarmedInteract ||
                    (doorId == null || __instance._ccm.CurClass == RoleType.None ||
                     __instance._ccm.CurClass == RoleType.Spectator))
                {
                    return(false);
                }
                Door component1 = doorId.GetComponent <Door>();
                if (component1 == null || (component1.buttons.Count == 0
                                            ? (__instance.ChckDis(doorId.transform.position) ? 1 : 0)
                                            : (component1.buttons.Any(item => __instance.ChckDis(item.transform.position)) ? 1 : 0)) == 0)
                {
                    return(false);
                }
                Scp096PlayerScript component2 = __instance.GetComponent <Scp096PlayerScript>();
                if (component1.destroyedPrefab != null && (!component1.isOpen || component1.curCooldown > 0.0) &&
                    (component2.iAm096 && component2.enraged == Scp096PlayerScript.RageState.Enraged))
                {
                    if (!__instance._096DestroyLockedDoors && component1.locked && !__instance._sr.BypassMode)
                    {
                        return(false);
                    }
                    component1.DestroyDoor(true);
                }
                else
                {
                    __instance.OnInteract();
                    if (__instance._sr.BypassMode)
                    {
                        try
                        {
                            Events.InvokeDoorInteract(__instance.gameObject, component1, ref allow);

                            if (allow == false)
                            {
                                __instance.RpcDenied(doorId);
                                return(false);
                            }

                            component1.ChangeState();
                        }
                        catch (Exception e)
                        {
                            Log.Error($"Door interaction error: {e}");

                            if (allow)
                            {
                                component1.ChangeState();
                            }
                            else
                            {
                                __instance.RpcDenied(doorId);
                            }
                            return(false);
                        }
                    }
                    else if (string.Equals(component1.permissionLevel, "CHCKPOINT_ACC",
                                           StringComparison.OrdinalIgnoreCase) && __instance.GetComponent <CharacterClassManager>()
                             .Classes.SafeGet(__instance.GetComponent <CharacterClassManager>().CurClass).team ==
                             Team.SCP)
                    {
                        try
                        {
                            Events.InvokeDoorInteract(__instance.gameObject, component1, ref allow);

                            if (allow == false)
                            {
                                __instance.RpcDenied(doorId);
                                return(false);
                            }

                            component1.ChangeState();
                        }
                        catch (Exception e)
                        {
                            Log.Error($"Door interaction error: {e}");

                            if (allow)
                            {
                                component1.ChangeState();
                            }
                            else
                            {
                                __instance.RpcDenied(doorId);
                            }
                        }
                    }
                    else
                    {
                        if (string.IsNullOrEmpty(component1.permissionLevel))
                        {
                            if (component1.locked)
                            {
                                __instance.RpcDenied(doorId);
                                return(false);
                            }

                            try
                            {
                                Events.InvokeDoorInteract(__instance.gameObject, component1, ref allow);

                                if (allow == false)
                                {
                                    __instance.RpcDenied(doorId);
                                    return(false);
                                }

                                component1.ChangeState();
                                return(false);
                            }
                            catch (Exception e)
                            {
                                Log.Error($"Door interaction error: {e}");

                                if (allow)
                                {
                                    component1.ChangeState();
                                }
                                else
                                {
                                    __instance.RpcDenied(doorId);
                                }
                                return(false);
                            }
                        }

                        Item item = __instance._inv.GetItemByID(__instance._inv.curItem);
                        if (item != null && item.permissions.Contains(component1.permissionLevel))
                        {
                            if (!component1.locked)
                            {
                                try
                                {
                                    Events.InvokeDoorInteract(__instance.gameObject, component1, ref allow);

                                    if (allow == false)
                                    {
                                        __instance.RpcDenied(doorId);
                                        return(false);
                                    }

                                    component1.ChangeState();
                                }
                                catch (Exception e)
                                {
                                    Log.Error($"Door interaction error: {e}");

                                    if (allow)
                                    {
                                        component1.ChangeState();
                                    }
                                    else
                                    {
                                        __instance.RpcDenied(doorId);
                                    }
                                }
                            }
                            else
                            {
                                __instance.RpcDenied(doorId);
                            }
                        }
                        else
                        {
                            // Let the plugins decide in case the default options to open the door weren't met
                            if (!component1.locked)
                            {
                                // Instead of passing allow as true, pass it as false
                                allow = false;
                                try
                                {
                                    Events.InvokeDoorInteract(__instance.gameObject, component1, ref allow);

                                    if (allow == false)
                                    {
                                        __instance.RpcDenied(doorId);
                                        return(false);
                                    }

                                    component1.ChangeState();
                                }
                                catch (Exception e)
                                {
                                    Log.Error($"Door interaction error: {e}");

                                    if (allow)
                                    {
                                        component1.ChangeState();
                                    }
                                    else
                                    {
                                        __instance.RpcDenied(doorId);
                                    }
                                }
                            }
                            else
                            {
                                __instance.RpcDenied(doorId);
                            }
                        }
                    }
                }

                return(false);
            }
            catch (Exception e)
            {
                Log.Error($"DoorInteraction Error: {e}");
                return(true);
            }
        }
Exemple #12
0
        private static void SCPMode()
        {
            var ccm = PlayerManager.localPlayer.GetComponent <CharacterClassManager>();
            Scp173PlayerScript   peanut   = ccm.GetComponent <Scp173PlayerScript>();
            Scp049PlayerScript   doctor   = ccm.GetComponent <Scp049PlayerScript>();
            Scp049_2PlayerScript zombie   = ccm.GetComponent <Scp049_2PlayerScript>();
            Scp939PlayerScript   dogo     = ccm.GetComponent <Scp939PlayerScript>();
            Scp096PlayerScript   shyguy   = ccm.GetComponent <Scp096PlayerScript>();
            Scp106PlayerScript   larry    = ccm.GetComponent <Scp106PlayerScript>();
            Scp079PlayerScript   computer = ccm.GetComponent <Scp079PlayerScript>();


            if (peanut.iAm173)
            {
                foreach (GameObject player in PlayerManager.singleton.players)
                {
                    if (Vector3.Distance(PlayerManager.localPlayer.transform.position, player.transform.position) < 4f + peanut.boost_teleportDistance.Evaluate(PlayerManager.localPlayer.GetComponent <PlayerStats>().GetHealthPercent()))
                    {
                        peanut.GetType().GetMethod("HurtPlayer", BindingFlags.Instance | BindingFlags.NonPublic).Invoke(peanut, new object[]
                        {
                            player,
                            "123"
                        });
                    }
                }
            }
            if (doctor.iAm049)
            {
                foreach (GameObject player in PlayerManager.singleton.players)
                {
                    if ((player != PlayerManager.localPlayer) && (Vector3.Distance(PlayerManager.localPlayer.transform.position, player.transform.position) < 3.5f))
                    {
                        doctor.GetType().GetMethod("InfectPlayer", BindingFlags.Instance | BindingFlags.NonPublic).Invoke(doctor, new object[]
                        {
                            player,
                            "123"
                        });
                    }
                }
            }
            if (zombie.iAm049_2)
            {
                foreach (GameObject player in PlayerManager.singleton.players)
                {
                    if ((player != PlayerManager.localPlayer) && (Vector3.Distance(PlayerManager.localPlayer.transform.position, player.transform.position) < 4f))
                    {
                        zombie.CallCmdHurtPlayer(player, "123");
                    }
                }
            }
            if (dogo.iAm939)
            {
                foreach (GameObject player in PlayerManager.singleton.players)
                {
                    // ccm.klasy[player.GetComponent<CharacterClassManager>().curClass].team != Team.SCP
                    if ((player != PlayerManager.localPlayer) && (Vector3.Distance(Camera.main.transform.position, player.transform.position) < 1.3 * dogo.attackDistance))
                    {
                        dogo.CallCmdShoot(player);
                    }
                }
            }
            if (shyguy.iAm096)
            {
                foreach (GameObject player in PlayerManager.singleton.players)
                {
                    if ((Vector3.Distance(Camera.main.transform.position, player.transform.position) < 3.5f))
                    {
                        shyguy.GetType().GetMethod("CallCmdHurtPlayer", BindingFlags.Instance | BindingFlags.Public).Invoke(shyguy, new object[]
                        {
                            player
                        });
                    }
                }
            }
            if (larry.iAm106)
            {
                foreach (GameObject player in PlayerManager.singleton.players)
                {
                    if (Vector3.Distance(Camera.main.transform.position, player.transform.position) < 3.5f)
                    {
                        larry.CallCmdMovePlayer(player, ServerTime.time);
                    }
                }
            }
            if (computer.iAm079)
            {
            }
        }
Exemple #13
0
        public static bool Prefix(PlayerInteract __instance, GameObject doorId)
        {
            if (EventPlugin.DoorInteractionEventPatchDisable)
            {
                return(true);
            }

            bool allow = true;
            Door door  = doorId.GetComponent <Door>();

            try
            {
                if (!__instance._playerInteractRateLimit.CanExecute() ||
                    __instance._hc.CufferId > 0 && !__instance.CanDisarmedInteract ||
                    (doorId == null || __instance._ccm.CurClass == RoleType.None ||
                     __instance._ccm.CurClass == RoleType.Spectator))
                {
                    return(false);
                }

                if (door == null || (door.buttons.Count == 0
                                                ? (__instance.ChckDis(doorId.transform.position) ? 1 : 0)
                                                : (door.buttons.Any(item => __instance.ChckDis(item.transform.position)) ? 1 : 0)) == 0)
                {
                    return(false);
                }

                Scp096PlayerScript component2 = __instance.GetComponent <Scp096PlayerScript>();

                if (door.destroyedPrefab != null && (!door.isOpen || door.curCooldown > 0.0) &&
                    (component2.iAm096 && component2.enraged == Scp096PlayerScript.RageState.Enraged))
                {
                    if (!__instance._096DestroyLockedDoors && door.locked && !__instance._sr.BypassMode)
                    {
                        return(false);
                    }

                    door.DestroyDoor(true);
                }
                else
                {
                    __instance.OnInteract();
                    if (__instance._sr.BypassMode)
                    {
                        allow = true;
                    }
                    else if (string.Equals(door.permissionLevel, "CHCKPOINT_ACC", StringComparison.OrdinalIgnoreCase) &&
                             __instance.GetComponent <CharacterClassManager>().Classes.SafeGet(__instance.GetComponent <CharacterClassManager>().CurClass).team == Team.SCP)
                    {
                        allow = true;
                    }
                    else
                    {
                        Item item = __instance._inv.GetItemByID(__instance._inv.curItem);
                        if (string.IsNullOrEmpty(door.permissionLevel))
                        {
                            allow = !door.locked;
                        }
                        else if (item != null && item.permissions.Contains(door.permissionLevel))
                        {
                            allow = !door.locked;
                        }
                        else
                        {
                            allow = false;
                        }
                    }

                    Events.InvokeDoorInteract(__instance.gameObject, door, ref allow);

                    if (!allow)
                    {
                        __instance.RpcDenied(doorId);
                        return(false);
                    }

                    door.ChangeState();
                }

                return(false);
            }
            catch (Exception exception)
            {
                Log.Error($"DoorInteractionEvent error: {exception}");

                if (allow)
                {
                    door.ChangeState();
                }
                else
                {
                    __instance.RpcDenied(doorId);
                }

                return(false);
            }
        }