private static void Prefix(GameObject zombie) { int num = 0; foreach (GameObject gameObject in global::PlayerManager.players) { if (Npc.Dictionary.ContainsKey(gameObject) && !Npc.Dictionary[gameObject].AffectRoundSummary) { continue; } if (!(gameObject == zombie)) { global::ReferenceHub hub = global::ReferenceHub.GetHub(gameObject); if (hub.characterClassManager.CurClass != global::RoleType.Scp079 && hub.characterClassManager.CurRole.team == global::Team.SCP) { num++; } } } if (num <= 0 && global::Generator079.mainGenerator.totalVoltage < 4 && !global::Generator079.mainGenerator.forcedOvercharge) { global::Generator079.mainGenerator.forcedOvercharge = true; global::Recontainer079.BeginContainment(true); global::NineTailedFoxAnnouncer.singleton.ServerOnlyAddGlitchyPhrase("ALLSECURED . SCP 0 7 9 RECONTAINMENT SEQUENCE COMMENCING . FORCEOVERCHARGE", 0.1f, 0.07f); } }
private static bool Prefix(Scp049_2PlayerScript __instance, GameObject plyObj) { if (__instance._hub.gameObject.GetComponent <SCP457Controller>() != null) { Transform playerCameraReference = __instance._hub.PlayerCameraReference; Collider[] array = Physics.OverlapSphere(playerCameraReference.position + playerCameraReference.forward * 1.25f, MainClass.singleton.Config.attack_settings.radius_attack, LayerMask.GetMask(new string[] { "PlyCenter" })); HashSet <GameObject> hashSet = new HashSet <GameObject>(); foreach (Collider collider in array) { global::ReferenceHub componentInParent3 = collider.GetComponentInParent <global::ReferenceHub>(); if (!(componentInParent3 == null) && !(componentInParent3 == __instance._hub) && !componentInParent3.characterClassManager.IsAnyScp() && hashSet.Add(componentInParent3.gameObject) && !Physics.Linecast(__instance._hub.transform.position, componentInParent3.transform.position, LayerMask.GetMask(new string[] { "Default" }))) { var burningComponent = componentInParent3.gameObject.GetComponent <BurningComponent>(); if (burningComponent != null) { if (!Physics.Linecast(__instance._hub.playerMovementSync.RealModelPosition, componentInParent3.gameObject.transform.position, __instance._hub.playerMovementSync.CollidableSurfaces)) { var burn = burningComponent.burningtime; burn += MainClass.singleton.Config.attack_settings.burning_time; burningComponent.burningAppliedBy = __instance._hub; if (burn > MainClass.singleton.Config.attack_settings.burning_time_max) { burn = MainClass.singleton.Config.attack_settings.burning_time_max; } burningComponent.burningtime = burn; burningComponent.colatime = MainClass.singleton.Config.attack_settings.cola_duration; burningComponent.hub.ReferenceHub.playerEffectsController.EnableEffect <CustomPlayerEffects.Scp207>(MainClass.singleton.Config.attack_settings.cola_duration); burningComponent.hub.ReferenceHub.playerEffectsController.GetEffect <CustomPlayerEffects.Scp207>().ServerChangeIntensity(1); burningComponent.hub.ReferenceHub.playerStats.HurtPlayer(new PlayerStats.HitInfo(MainClass.singleton.Config.attack_settings.dmg_amount, "SCP457", DamageTypes.Asphyxiation, 0), burningComponent.hub.GameObject); } } } } return(false); } return(true); }
private static bool Prefix(Scp096 __instance) { if (__instance._flash.Enabled) { return(false); } Exiled.API.Features.Player scp096 = Exiled.API.Features.Player.Get(__instance.Hub); if (scp096.IsNPC() && !NPCS.Npc.Dictionary[__instance.Hub.gameObject].ProcessSCPLogic) { return(false); } Vector3 vector = __instance.Hub.transform.TransformPoint(Scp096._headOffset); foreach (System.Collections.Generic.KeyValuePair <GameObject, global::ReferenceHub> keyValuePair in global::ReferenceHub.GetAllHubs()) { global::ReferenceHub value = keyValuePair.Value; global::CharacterClassManager characterClassManager = value.characterClassManager; NPCS.Npc npc = NPCS.Npc.Dictionary.ContainsKey(keyValuePair.Key) ? NPCS.Npc.Dictionary[keyValuePair.Key] : null; if (characterClassManager.CurClass != global::RoleType.Spectator && !(value == __instance.Hub) && !characterClassManager.IsAnyScp() && Vector3.Dot((value.PlayerCameraReference.position - vector).normalized, __instance.Hub.PlayerCameraReference.forward) >= 0.1f && (npc == null || npc.ShouldTrigger096)) { VisionInformation visionInformation = VisionInformation.GetVisionInformation(value, vector, -0.1f, 60f, true, true, __instance.Hub.localCurrentRoomEffects); if (visionInformation.IsLooking) { float delay = visionInformation.LookingAmount / 0.25f * (visionInformation.Distance * 0.1f); if (!__instance.Calming) { __instance.AddTarget(value.gameObject); } if (__instance.CanEnrage && value.gameObject != null) { __instance.PreWindup(delay); } } } } return(false); }
public static bool Prefix(MicroHID __instance) { if (!NetworkServer.active) { return(false); } var baseObj = (NetworkBehaviour)__instance; __instance.damagePause += Time.deltaTime; if (__instance.damagePause < 0.2f) { return(false); } __instance.damagePause -= 0.2f; global::ReferenceHub referenceHub = __instance.refHub; __instance.beamStart.localRotation = Quaternion.Euler(referenceHub.playerMovementSync.Rotations.x, 0f, 0f); foreach (GameObject gameObject in global::PlayerManager.players) { if (gameObject != null && gameObject != baseObj.gameObject && Vector3.Distance(baseObj.transform.position, gameObject.transform.position) <= __instance.beamLength) { Vector3 normalized = (__instance.beamStart.position - gameObject.transform.position).normalized; RaycastHit raycastHit; if (Vector3.Dot(__instance.beamStart.forward, normalized) < -0.95f && Physics.Raycast(new Ray(__instance.beamStart.position, -normalized), out raycastHit, __instance.beamLength, __instance.beamMask)) { if (raycastHit.collider != __instance.lastVictim) { __instance.lastVictim = raycastHit.collider; __instance.lastVictimRefs = raycastHit.collider.GetComponentInParent <global::ReferenceHub>(); } global::ReferenceHub referenceHub2 = __instance.lastVictimRefs; if (referenceHub2 != null && referenceHub2.gameObject != baseObj.gameObject && referenceHub.weaponManager.GetShootPermission(referenceHub2.characterClassManager, false)) { int damage = 0; if (MicroHIDPlugin.instance.Config.mhid_damage_per_hit == -1) { float num = UnityEngine.Random.Range(-__instance.maxDamageVariationPercent, __instance.maxDamageVariationPercent) / 100f * __instance.damagePerSecond; damage = Mathf.RoundToInt((__instance.damagePerSecond + num) * 0.2f); } else { damage = MicroHIDPlugin.instance.Config.mhid_damage_per_hit; } bool isAchievement = referenceHub2.characterClassManager.CurRole.team == global::Team.SCP; if (!referenceHub.playerStats.HurtPlayer(new global::PlayerStats.HitInfo((float)damage, referenceHub.LoggedNameFromRefHub(), global::DamageTypes.MicroHid, referenceHub.queryProcessor.PlayerId), gameObject, false)) { isAchievement = false; } __instance.TargetSendHitmarker(isAchievement); } } } } RaycastHit raycastHit2; if (Physics.Raycast(new Ray(__instance.beamStart.position, __instance.beamStart.forward), out raycastHit2, __instance.beamLength, __instance.beamMask)) { global::BreakableWindow componentInParent = raycastHit2.collider.GetComponentInParent <global::BreakableWindow>(); if (componentInParent != null && !componentInParent.isBroken) { float num3 = UnityEngine.Random.Range(-__instance.maxDamageVariationPercent, __instance.maxDamageVariationPercent) / 100f * __instance.damagePerSecond; int num4 = Mathf.RoundToInt((__instance.damagePerSecond + num3) * 0.2f); componentInParent.ServerDamageWindow((float)num4); } } return(false); }