private static void Prefix(ServerConsole __instance) { string text; while (global::ServerConsole.PrompterQueue.TryDequeue(out text)) { if (!string.IsNullOrWhiteSpace(text)) { ConsoleColor color; global::ServerConsole.AddLog(global::ServerConsole.EnterCommand(text, out color, null), color); } } if (global::ServerConsole._playersListRefresh < 5f) { global::ServerConsole._playersListRefresh += Time.fixedDeltaTime; return; } if (!global::ServerConsole.PlayersListChanged) { return; } global::ServerConsole.PlayersListChanged = false; global::ServerConsole._playersListRefresh = 0f; try { foreach (GameObject gameObject in global::PlayerManager.players) { if (!(gameObject == null)) { global::CharacterClassManager component = gameObject.GetComponent <global::CharacterClassManager>(); if (!(component == null) && component.IsVerified && !Npc.Dictionary.ContainsKey(component.gameObject) && !string.IsNullOrEmpty(component.UserId) && (!component.isLocalPlayer || !global::ServerStatic.IsDedicated)) { global::ServerConsole.PlayersListRaw.objects.Add(component.UserId); } } } global::ServerConsole._verificationPlayersList = global::JsonSerialize.ToJson <global::PlayerListSerialized>(global::ServerConsole.PlayersListRaw); global::ServerConsole.PlayersListRaw.objects.Clear(); } catch (Exception ex) { global::ServerConsole.AddLog("[VERIFICATION] Exception in Players Online processing: " + ex.Message, ConsoleColor.Gray); global::ServerConsole.AddLog(ex.StackTrace, ConsoleColor.Gray); } }
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); }
private static void Prefix(NineTailedFoxAnnouncer __instance) { if (global::NineTailedFoxAnnouncer.scpDeaths.Count <= 0) { return; } __instance.scpListTimer += Time.deltaTime; if (__instance.scpListTimer <= 1f) { return; } for (int i = 0; i < global::NineTailedFoxAnnouncer.scpDeaths.Count; i++) { string text = ""; for (int j = 0; j < global::NineTailedFoxAnnouncer.scpDeaths[i].scpSubjects.Count; j++) { string text2 = ""; string text3 = global::NineTailedFoxAnnouncer.scpDeaths[i].scpSubjects[j].fullName.Split(new char[] { '-' })[1]; for (int k = 0; k < text3.Length; k++) { text2 = text2 + text3[k].ToString() + " "; } if (j == 0) { text = text + "SCP " + text2; } else { text = text + ". SCP " + text2; } } global::NineTailedFoxAnnouncer.ScpDeath scpDeath = global::NineTailedFoxAnnouncer.scpDeaths[i]; global::DamageTypes.DamageType damageType = scpDeath.hitInfo.GetDamageType(); if (damageType == global::DamageTypes.Tesla) { text += "SUCCESSFULLY TERMINATED BY AUTOMATIC SECURITY SYSTEM"; } else if (damageType == global::DamageTypes.Nuke) { text += "SUCCESSFULLY TERMINATED BY ALPHA WARHEAD"; } else if (damageType == global::DamageTypes.Decont) { text += "LOST IN DECONTAMINATION SEQUENCE"; } else { global::CharacterClassManager characterClassManager = null; foreach (GameObject gameObject in global::PlayerManager.players) { int playerId = gameObject.GetComponent <RemoteAdmin.QueryProcessor>().PlayerId; scpDeath = global::NineTailedFoxAnnouncer.scpDeaths[i]; if (playerId == scpDeath.hitInfo.PlayerId) { characterClassManager = gameObject.GetComponent <global::CharacterClassManager>(); } } if (characterClassManager != null) { if (global::NineTailedFoxAnnouncer.scpDeaths[i].scpSubjects[0].roleId != global::RoleType.Scp106) { goto IL_207; } scpDeath = global::NineTailedFoxAnnouncer.scpDeaths[i]; if (scpDeath.hitInfo.GetDamageType() != global::DamageTypes.RagdollLess) { goto IL_207; } string text4 = "CONTAINEDSUCCESSFULLY"; IL_213: string str = text4; switch (characterClassManager.CurRole.team) { case global::Team.MTF: { Respawning.NamingRules.UnitNamingRule unitNamingRule; string str2; if (!Respawning.NamingRules.UnitNamingRules.TryGetNamingRule(Respawning.SpawnableTeamType.NineTailedFox, out unitNamingRule)) { str2 = "UNKNOWN"; } else { str2 = unitNamingRule.GetCassieUnitName(characterClassManager.CurUnitName); } text = text + "CONTAINEDSUCCESSFULLY CONTAINMENTUNIT " + str2; goto IL_2BB; } case global::Team.CHI: text = text + str + " BY CHAOSINSURGENCY"; goto IL_2BB; case global::Team.RSC: text = text + str + " BY SCIENCE PERSONNEL"; goto IL_2BB; case global::Team.CDP: text = text + str + " BY CLASSD PERSONNEL"; goto IL_2BB; default: text += "SUCCESSFULLY TERMINATED . CONTAINMENTUNIT UNKNOWN"; goto IL_2BB; } IL_207: text4 = "TERMINATED"; goto IL_213; } text += "SUCCESSFULLY TERMINATED . TERMINATION CAUSE UNSPECIFIED"; } IL_2BB: int num = 0; bool flag = false; foreach (GameObject gameObject2 in global::PlayerManager.players) { global::CharacterClassManager component = gameObject2.GetComponent <global::CharacterClassManager>(); if (Npc.Dictionary.ContainsKey(gameObject2) && !Npc.Dictionary[gameObject2].AffectRoundSummary) { continue; } if (component.CurClass == global::RoleType.Scp079) { flag = true; } if (component.CurRole.team == global::Team.SCP) { num++; } } if (num == 1 && flag && global::Generator079.mainGenerator.totalVoltage < 4 && !global::Generator079.mainGenerator.forcedOvercharge) { global::Generator079.mainGenerator.forcedOvercharge = true; global::Recontainer079.BeginContainment(true); text += " . ALLSECURED . SCP 0 7 9 RECONTAINMENT SEQUENCE COMMENCING . FORCEOVERCHARGE"; } float num2 = (global::AlphaWarheadController.Host.timeToDetonation <= 0f) ? 3.5f : 1f; __instance.ServerOnlyAddGlitchyPhrase(text, UnityEngine.Random.Range(0.1f, 0.14f) * num2, UnityEngine.Random.Range(0.07f, 0.08f) * num2); } __instance.scpListTimer = 0f; global::NineTailedFoxAnnouncer.scpDeaths.Clear(); }
public static bool Prefix(SinkholeEnvironmentalHazard __instance, ReferenceHub player) { // Check if player has a connection to the server. if (!NetworkServer.active) { return(false); } if (player.playerEffectsController == null) { return(false); } global::PlayerEffectsController playerEffectsController = player.playerEffectsController; // Check if the player walking into a sinkhole is an SCP or not. if (__instance.SCPImmune) { global::CharacterClassManager characterClassManager = player.characterClassManager; if (characterClassManager == null || characterClassManager.IsAnyScp()) { return(false); } } /* Check if player is in god mode. * Player ply = Player.Get(player); * if (ply.IsGodModeEnabled) return false; */ // If a player is out of a sinkhole's range. if ((double)Vector3.Distance(player.playerMovementSync.RealModelPosition, __instance.transform.position) > (double)__instance.DistanceToBeAffected * BetterSinkholes2.config.SlowDistance) { // If player doesn't have a sinkhole effect don't remove it. if (player.TryGetComponent <PlayerEffectsController>(out PlayerEffectsController pec)) { CustomPlayerEffects.SinkHole SinkholeEffect = pec.GetEffect <CustomPlayerEffects.SinkHole>(); // // If the player has the sinkhole effect, remove it. if (SinkholeEffect != null && SinkholeEffect.enabled) { playerEffectsController.DisableEffect <CustomPlayerEffects.SinkHole>(); } return(false); } return(false); } // Check distance from the sinkhole's center. if ((double)Vector3.Distance(player.playerMovementSync.RealModelPosition, __instance.transform.position) < (double)__instance.DistanceToBeAffected * BetterSinkholes2.config.TeleportDistance) { // Remove Sinkhole effect once falling into a sinkhole. playerEffectsController.DisableEffect <CustomPlayerEffects.SinkHole>(); // Teleport player once walking too close to the center of a sinkhole. player.playerMovementSync.OverridePosition(Vector3.down * 1998.5f, 0f, true); // Apply corrosion effect. playerEffectsController.EnableEffect <CustomPlayerEffects.Corroding>(0f, false); // Send player a broadcast specified in the configs. Default: "" for 0U duration. QueryProcessor.Localplayer.GetComponent <Broadcast>().TargetAddElement(player.gameObject.GetComponent <NetworkIdentity>().connectionToClient, BetterSinkholes2.translation.TeleportMessage, BetterSinkholes2.config.TeleportMessageDuration, Broadcast.BroadcastFlags.Normal); return(false); } playerEffectsController.EnableEffect <CustomPlayerEffects.SinkHole>(0f, false); return(false); }