public static bool Prefix(PlayableScps.Scp096 __instance) { if (((PlayableScp)__instance).isLocalPlayer) { __instance._abilityManager.RunInputs(); CursorManager.ChangeMouseVisibility(LockReason.Scp096, (__instance.Charging || (__instance.TryingNotToCry || __instance.PryingGate)) ? MouseVisibilityType.InvisibleButCantMove : MouseVisibilityType.Invisible, false); if (!__instance.PlayerState.IsOffensive() && !__instance._visionTargets.IsEmpty <TargetComponent>()) { foreach (TargetComponent component in __instance._visionTargets) { if (component != null) { component.IsTarget = false; } } __instance._visionTargets.Clear(); } if (__instance.TryingNotToCry && (__instance.Hub.fpc.PlySpeed != Vector2.zero)) { Scp096InputMessage message = new Scp096InputMessage { InputState = Scp096InputState.None }; NetworkClient.Send <Scp096InputMessage>(message, 0); } } if (NetworkServer.active) { __instance.UpdateShield(); __instance.UpdateEnrage(); __instance.UpdateCharging(); __instance.UpdatePry(); foreach (GameObject obj2 in PlayerManager.players) { CharacterClassManager manager = obj2.GetComponent <CharacterClassManager>(); if (manager == null || ((manager.CurClass != RoleType.Spectator) && !manager.IsAnyScp())) { Player player = Player.Get(obj2); if (player != null && Tracking.PlayersWithSubclasses.ContainsKey(player) && Tracking.PlayersWithSubclasses[player].Abilities.Contains(AbilityType.Disable096Trigger)) { continue; } VisionInformation visionInformation = __instance.GetVisionInformation(obj2); if (visionInformation.Looking) { __instance.ParseVisionInformation(visionInformation); } } } foreach (KeyValuePair <GameObject, Door> pair in PlayableScps.Scp096.takenDoors) { if (pair.Value.isOpen) { PlayableScps.Scp096 scp = PlayableScps.Scp096.Get096FromPlayerObject(pair.Key); if (scp != null) { if (pair.Key == null) { PlayableScps.Scp096.takenDoors.Remove(pair.Key); } else { scp.ResetState(); } break; } } } } return(false); }