예제 #1
0
        private static bool Prefix(Scp173PlayerScript __instance)
        {
            try
            {
                if ((Scp173PlayerScript._remainingTime - Time.fixedDeltaTime) >= 0f)
                {
                    return(true);
                }
                if (!SynapseController.Server.Map.Round.RoundIsActive)
                {
                    return(true);
                }

                __instance.DoBlinkingSequence();
                if (!__instance.iAm173 || (!__instance.isLocalPlayer && !NetworkServer.active))
                {
                    return(false);
                }

                HashSet <Player> players = new HashSet <Player>();

                //Get all players looking at Scp173
                foreach (GameObject gameObject in PlayerManager.players)
                {
                    Scp173PlayerScript component = gameObject.GetComponent <Scp173PlayerScript>();
                    if (!component.SameClass && component.LookFor173(__instance.gameObject, true) && __instance.LookFor173(component.gameObject, false))
                    {
                        players.Add(gameObject.GetPlayer());
                    }
                }

                var scriptHolder = __instance.gameObject.GetPlayer();
                scriptHolder.Scp173Controller.ConfrontingPlayers = players;

                //If someone is confronting Scp173 when blinking
                if (scriptHolder.Scp173Controller.ConfrontingPlayers.Count != 0)
                {
                    Server.Get.Events.Scp.Scp173.InvokeScp173BlinkEvent(scriptHolder);
                }

                __instance.AllowMove = true;

                //Original
                foreach (GameObject gameObject in PlayerManager.players)
                {
                    Scp173PlayerScript component = gameObject.GetComponent <Scp173PlayerScript>();
                    if (!component.SameClass && component.LookFor173(__instance.gameObject, true) && __instance.LookFor173(component.gameObject, false))
                    {
                        __instance.AllowMove = false;
                        break;
                    }
                }
            }
            catch (System.Exception e)
            {
                Synapse.Api.Logger.Get.Error($"Synapse-Event: Scp173BlinkEvent(Scp173) failed!!\n{e}\nStackTrace:\n{e.StackTrace}");
            }
            return(false);
        }
예제 #2
0
        public static bool Prefix(Scp173PlayerScript __instance)
        {
            if (EventPlugin.Scp173PatchDisable)
            {
                return(true);
            }

            try
            {
                __instance.DoBlinkingSequence();

                if (!__instance.iAm173)
                {
                    return(false);
                }

                __instance._allowMove = true;

                foreach (GameObject player in PlayerManager.players)
                {
                    ReferenceHub hub = player.GetPlayer();

                    if (hub.characterClassManager.CurClass == RoleType.Tutorial)
                    {
                        continue;
                    }

                    Scp173PlayerScript component = player.GetComponent <Scp173PlayerScript>();

                    if (!component.SameClass && component.LookFor173(__instance.gameObject, true) && __instance.LookFor173(component.gameObject, false))
                    {
                        __instance._allowMove = false;
                        break;
                    }
                }

                return(false);
            }
            catch (Exception exception)
            {
                Log.Error($"Scp173Patch error: {exception}");
                return(true);
            }
        }
예제 #3
0
        private static bool Prefix(Scp173PlayerScript __instance)
        {
            try
            {
                __instance.DoBlinkingSequence();

                if (!__instance.iAm173)
                {
                    return(false);
                }

                __instance._allowMove = true;

                foreach (GameObject gameObject in PlayerManager.players)
                {
                    Player player = Player.Get(gameObject);

                    if (player.Role == RoleType.Tutorial)
                    {
                        continue;
                    }

                    Scp173PlayerScript component = player.ReferenceHub.GetComponent <Scp173PlayerScript>();

                    if (!component.SameClass && component.LookFor173(__instance.gameObject, true) && __instance.LookFor173(component.gameObject, false))
                    {
                        __instance._allowMove = false;
                        break;
                    }
                }

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