public static bool Prefix(Scp173PlayerScript __instance) { Plugin.Singleton.Functions.CustomBlinkSequence(__instance); if (!__instance.iAm173 || (!__instance.isLocalPlayer && !Mirror.NetworkServer.active)) { return(false); } __instance.AllowMove = true; Plugin.Singleton.SomeoneIsLooking = false; foreach (Player player in Player.List) { Scp173PlayerScript playerScript = player.ReferenceHub.characterClassManager.Scp173; if (!playerScript.SameClass && (player.Role != RoleType.Tutorial || Events.Instance.Config.CanTutorialBlockScp173) && playerScript.LookFor173(__instance.gameObject, true) && __instance.LookFor173(player.GameObject, false)) { __instance.AllowMove = false; Plugin.Singleton.SomeoneIsLooking = true; break; } } if (!Plugin.Singleton.SomeoneIsLooking) { Plugin.Singleton.Functions.SubtractTime(UnityEngine.Time.fixedDeltaTime * Plugin.Singleton.Config.DecreaseRate); } return(false); }
private static void Prefix(Scp173PlayerScript __instance) { if (Scp173PlayerScript._remainingTime - Time.fixedDeltaTime < 0f) { var triggers = ListPool <Player> .Shared.Rent(); foreach (var player in Player.List) { if (player.Team != Team.SCP && player.Team != Team.RIP) { Scp173PlayerScript playerScript = player.ReferenceHub.characterClassManager.Scp173; if (playerScript.LookFor173(__instance.gameObject, true)) { triggers.Add(player); } } } if (triggers.Count > 0) { Handlers.Scp173.OnBlinking(new BlinkingEventArgs(Player.Get(__instance.gameObject), triggers)); } ListPool <Player> .Shared.Return(triggers); } }
public static bool Prefix(Scp173PlayerScript __instance) { BlinkCustomMethod.CustomBlinkingSequence(__instance); if (!__instance.iAm173 || (!__instance.isLocalPlayer && !Mirror.NetworkServer.active)) { return(false); } if (!BlinkCustomMethod.someoneLooking) { BlinkCustomMethod.reworkSubstractTime -= Time.fixedDeltaTime * BlinkConfigs.decreaseRate; if (BlinkCustomMethod.reworkSubstractTime < 0f) { BlinkCustomMethod.reworkSubstractTime = 0f; } } __instance._allowMove = true; BlinkCustomMethod.someoneLooking = false; foreach (GameObject gameObject in PlayerManager.players) { Scp173PlayerScript component = gameObject.GetComponent <Scp173PlayerScript>(); if (!component.SameClass && component.GetComponent <CharacterClassManager>().CurClass != RoleType.Tutorial && component.LookFor173(__instance.gameObject, true) && __instance.LookFor173(component.gameObject, false)) { __instance._allowMove = false; BlinkCustomMethod.someoneLooking = true; break; } } return(false); }
private void FixedUpdate() { this.DoBlinkingSequence(); if (base.isLocalPlayer && this.iAm173) { this.allowMove = true; foreach (GameObject gameObject in PlayerManager.singleton.players) { Scp173PlayerScript component = gameObject.GetComponent <Scp173PlayerScript>(); if (!component.sameClass && component.LookFor173()) { this.cooldown = 10; this.allowMove = false; } } this.CheckForInput(); this.fpc.lookingAtMe = (!this.allowMove && this.cooldown > 0); if (this.cooldown >= 0) { this.cooldown--; } float num = this.boost_speed.Evaluate(this.ps.GetHealthPercent()); this.fpc.m_WalkSpeed = num; this.fpc.m_RunSpeed = num; } }
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); }
private static void Postfix(ref bool __result, Scp173PlayerScript __instance, GameObject scp) { var player = __instance.GetPlayer(); var peanut = scp.GetPlayer(); __result = player?.Invisible != true && __result; if (peanut.RoleType == RoleType.Scp173 && peanut.Scp173Controller.IgnoredPlayers.Contains(player)) { __result = false; } }
internal static void CustomBlinkingSequence(Scp173PlayerScript scpScript) { if (!scpScript.isServer || !scpScript.isLocalPlayer) { return; } Scp173PlayerScript._remainingTime -= Time.fixedDeltaTime; Scp173PlayerScript._blinkTimeRemaining -= Time.fixedDeltaTime; if (Scp173PlayerScript._remainingTime >= 0f) { return; } Scp173PlayerScript._blinkTimeRemaining = scpScript.blinkDuration_see + 0.4f; Scp173PlayerScript._remainingTime = Mathf.Max(BlinkConfigs.minReworkBlinkTime, Random.Range(BlinkConfigs.minBlinkTime, BlinkConfigs.maxBlinkTime) - reworkSubstractTime); if (someoneLooking) { float val = Random.Range(BlinkConfigs.reworkAddMin, BlinkConfigs.reworkAddMax); EXILED.Plugin.Debug($"Adding {val} to {reworkSubstractTime}"); reworkSubstractTime += val; // If SCP-173 is sick of your shit, this basically negates an infinite stacking of the blink fatigue ability if (reworkSubstractTime > BlinkConfigs.minBlinkTime) { reworkSubstractTime = BlinkConfigs.minBlinkTime; } } else { float val = Random.Range(BlinkConfigs.reworkAddMin, BlinkConfigs.reworkAddMax) * BlinkConfigs.decreaseRate; EXILED.Plugin.Debug($"Substracting {val} to {reworkSubstractTime}"); reworkSubstractTime -= val; if (reworkSubstractTime < 0f) { reworkSubstractTime = 0f; } } var array = PlayerManager.players; for (int i = 0; i < array.Count; i++) { var comp = array[i].GetComponent <Scp173PlayerScript>(); if (comp != null) { comp.RpcBlinkTime(); } } }
public static bool Prefix(Scp173PlayerScript __instance, GameObject scp, bool angleCheck, ref bool __result) { Log.Debug("Inside 173 patch", Subclass.Instance.Config.Debug); //Player player = Player.Get(__instance.netIdentity); ReferenceHub hub = ((NetworkBehaviour)__instance).GetComponentInChildren <ReferenceHub>(); Log.Debug(Player.Get(hub).Id); //Log.Debug($"Player is {player?.Nickname}", Subclass.Instance.Config.Debug); //if (player != null && Tracking.PlayersWithSubclasses.ContainsKey(player) && // Tracking.PlayersWithSubclasses[player].Abilities.Contains(AbilityType.Disable173Stop)) //{ // Log.Debug("173 look disabled automatcially", Subclass.Instance.Config.Debug); // __result = false; // return false; //} return(true); }
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); } }
private static bool Prefix(Scp173PlayerScript __instance, GameObject target) { try { if (!__instance._interactRateLimit.CanExecute(true) || target == null) { return(false); } var player = target.GetPlayer(); var scp = __instance.GetPlayer(); if (scp.RoleType != RoleType.Scp173 || !__instance.CanMove(true) || Vector3.Distance(scp.Position, player.Position) >= 3f + __instance.boost_teleportDistance.Evaluate(__instance._ps.GetHealthPercent())) { return(false); } if (!scp.WeaponManager.GetShootPermission(player.ClassManager)) { return(false); } SynapseController.Server.Events.Scp.InvokeScpAttack(scp, player, Api.Enum.ScpAttackType.Scp173_Snap, out var allow); if (!allow) { return(false); } __instance.RpcSyncAudio(); scp.ClassManager.RpcPlaceBlood(player.transform.position, 0, 2.2f); player.Hurt(999990, DamageTypes.Scp173, scp); __instance.TargetHitMarker(scp.Connection); return(false); } catch (Exception e) { Synapse.Api.Logger.Get.Error($"Synapse-Event: ScpAttackEvent(Scp173) failed!!\n{e}\nStackTrace:\n{e.StackTrace}"); return(true); } }
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); } }
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) { } }