public static void Postfix(RoundStart __instance, short value) { if (value == -1) // Round started { return; } string message; if (value == -2) { message = "Waiting for players..."; } else { message = $"Game starts in {value.ToString().Tag("b")}"; } message = message.Size(30).VerticalOffset(-10); foreach (var referenceHub in ReferenceHub.Hubs.Values) { if (referenceHub.isDedicatedServer) { continue; } referenceHub.hints.Show(new TextHint(message, new HintParameter[] { new StringHintParameter(string.Empty) }, HintEffectPresets.FadeInAndOut(0f), 1f)); } }
public void OnConsoleCommand(SendingConsoleCommandEventArgs ev) { if (ev.Name.ToLower().StartsWith("eh")) { ev.Player.ReferenceHub.hints.Show(new TextHint("Test Hints", new HintParameter[] { new StringHintParameter("") }, HintEffectPresets.FadeInAndOut(0.25f, 1f, 0f))); } /* No longer used. * try * { * switch (ev.Command) * { * case "back": * { * Log.Info("Back command ran"); * string userid = ev.Player.UserId; * if (hubAFKList.Contains(userid)) * hubAFKList.Remove(userid); * if (hubAFKToBeKickedList.Contains(userid)) * hubAFKToBeKickedList.Remove(userid); * ev.Player.SetOverwatch(false); * * ev.ReturnMessage = "[KingsSCPSL] You have been removed from the AFK list!"; * break; * } * } * } * catch (Exception e) * { * Log.Error($"Handling command error: {e}"); * }*/ }
public void RunOnPlayerDeath(DiedEventArgs ev) { if (AllowRespawning) { _isWarheadDetonated = Warhead.IsDetonated; _isDecontaminationActivated = Map.IsLCZDecontaminated; Timing.CallDelayed(Instance.Config.RandomRespawnTimer, () => RevivePlayer(ev.Target)); } if (Instance.Config.EnableGrenadeOnDeath) { SpawnGrenadeOnPlayer(ev.Target, true); } if (!Instance.Config.EnableKillMessages) { return; } if (ev.Killer != ev.Target) { ev.Killer.ReferenceHub.hints.Show(new TextHint( $"\n\n\n\n\n\n\n\n\nYou killed player \"{ev.Target.Nickname}\" with \"{ev.Killer.CurrentItem.id}\"", new HintParameter[] { new StringHintParameter("") }, HintEffectPresets.FadeInAndOut(0.25f, 1f, 0f))); } else { ev.Killer.ReferenceHub.hints.Show(new TextHint($"\n\n\n\n\n\n\n\n\nYou game ended yourself", new HintParameter[] { new StringHintParameter("") }, HintEffectPresets.FadeInAndOut(0.25f, 1f, 0f))); } }
public void GiveTextHint(string message, float duration = 5f) { Hub.hints.Show(new TextHint(message, new HintParameter[] { new StringHintParameter("") }, HintEffectPresets.FadeInAndOut(duration), duration)); }
public void Awake() { Hub = Player.Get(gameObject); Counter = 1; Hub.ReferenceHub.hints.Show(new TextHint($"\n\n\n\n\n\n\n\n\nnumber of drinks consumed: {Counter}", new HintParameter[] { new StringHintParameter("") }, HintEffectPresets.FadeInAndOut(0.25f, 1f, 0f))); Exiled.Events.Handlers.Player.ChangingRole += RunWhenPlayerSwitchesClasses; Exiled.Events.Handlers.Player.MedicalItemUsed += RunWhenplayerDrinksSCP207; }
public void RunWhenplayerDrinksSCP207(UsedMedicalItemEventArgs Used207) { if (Used207.Player != Hub || Used207.Item != ItemType.SCP207) { return; } if (Hub.IsGodModeEnabled) { Counter = 0; return; } if (Counter < CreativeToolbox.ConfigRef.Config.Scp207DrinkLimit) { string MessageToReplace = RogerFKTokenReplace.ReplaceAfterToken(CreativeToolbox.ConfigRef.Config.DrinkingScp207Message, '%', new Tuple <string, object>[] { new Tuple <string, object>("counter", Counter) }); Used207.Player.ReferenceHub.hints.Show(new TextHint($"\n\n\n\n\n\n\n\n\n{MessageToReplace}", new HintParameter[] { new StringHintParameter("") }, HintEffectPresets.FadeInAndOut(0.25f, 1f, 0f))); } if (Counter == CreativeToolbox.ConfigRef.Config.Scp207PryGateLimit) { string MessageToReplace = RogerFKTokenReplace.ReplaceAfterToken(CreativeToolbox.ConfigRef.Config.PryGatesWithScp207Message, '%', new Tuple <string, object>[] { new Tuple <string, object>("counter", Counter) }); if (!CreativeToolboxEventHandler.PlayersThatCanPryGates.Contains(Hub)) { CreativeToolboxEventHandler.PlayersThatCanPryGates.Add(Hub); Used207.Player.ReferenceHub.hints.Show(new TextHint($"\n\n\n\n\n\n\n\n\n{MessageToReplace}", new HintParameter[] { new StringHintParameter("") }, HintEffectPresets.FadeInAndOut(0.25f, 1f, 0f))); } } if (Counter >= CreativeToolbox.ConfigRef.Config.Scp207DrinkLimit) { string MessageToReplace = RogerFKTokenReplace.ReplaceAfterToken(CreativeToolbox.ConfigRef.Config.ExplodeAfterScp207Message, '%', new Tuple <string, object>[] { new Tuple <string, object>("counter", Counter) }); if (CreativeToolboxEventHandler.PlayersThatCanPryGates.Contains(Hub)) { CreativeToolboxEventHandler.PlayersThatCanPryGates.Remove(Hub); } Hub.Health = 0; Hub.AdrenalineHealth = 0; Hub.Kill(); CreativeToolboxEventHandler.SpawnGrenadeOnPlayer(Hub, false); Counter = 0; Used207.Player.ReferenceHub.hints.Show(new TextHint($"\n\n\n\n\n\n\n\n\n{MessageToReplace}", new HintParameter[] { new StringHintParameter("") }, HintEffectPresets.FadeInAndOut(0.25f, 1f, 0f))); } }
public void RunWhenplayerDrinksSCP207(UsedMedicalItemEventArgs Used207) { if (Used207.Player != Hub || Used207.Item != ItemType.SCP207) { return; } if (Hub.IsGodModeEnabled) { Counter = 0; return; } if (Counter < CreativeToolbox.ConfigRef.Config.Scp207DrinkLimit) { Used207.Player.ReferenceHub.hints.Show(new TextHint($"\n\n\n\n\n\n\n\n\nnumber of drinks consumed: {Counter}", new HintParameter[] { new StringHintParameter("") }, HintEffectPresets.FadeInAndOut(0.25f, 1f, 0f))); } if (Counter == CreativeToolbox.ConfigRef.Config.Scp207PryGateLimit) { if (!CreativeToolboxEventHandler.PlayersThatCanPryGates.Contains(Hub.ReferenceHub)) { CreativeToolboxEventHandler.PlayersThatCanPryGates.Add(Hub.ReferenceHub); Used207.Player.ReferenceHub.hints.Show(new TextHint($"\n\n\n\n\n\n\n\n\nyou can now pry gates open", new HintParameter[] { new StringHintParameter("") }, HintEffectPresets.FadeInAndOut(0.25f, 1f, 0f))); } } if (Counter >= CreativeToolbox.ConfigRef.Config.Scp207DrinkLimit) { CreativeToolboxEventHandler.SpawnGrenadeOnPlayer(Hub, false); Counter = 0; Used207.Player.ReferenceHub.hints.Show(new TextHint($"\n\n\n\n\n\n\n\n\nyou drank too much and your body could not handle it", new HintParameter[] { new StringHintParameter("") }, HintEffectPresets.FadeInAndOut(0.25f, 1f, 0f))); } }
public static bool Prefix(Scp096 __instance, GameObject target) { ReferenceHub hub = ReferenceHub.GetHub(target); if (!__instance.CanReceiveTargets || hub == null || __instance._targets.Contains(hub)) { return(false); } if (!__instance._targets.IsEmpty <ReferenceHub>()) { __instance.EnrageTimeLeft += SCP096Re.instance.Config.re096_target_enrage_add; } hub.hints.Show(new TextHint(SCP096Re.instance.Config.re096_target_hint, new HintParameter[] { new StringHintParameter("") }, HintEffectPresets.FadeInAndOut(0.25f, 1f, 0f), 5f)); __instance._targets.Add(hub); __instance.AdjustShield(SCP096Re.instance.Config.re096_shield_per_target); return(false); }
public override void PublicUpdate() { if (!NetworkServer.active) { return; } if (Enabled) { if (!Hub.characterClassManager.IsHuman() || intensity < 1) { ServerDisable(); return; } if (!hasNotified) { Hub.hints.Show(new TextHint("You have been infected!", new HintParameter[] { new StringHintParameter("") }, HintEffectPresets.FadeInAndOut(1, 2.5f, 1.5f), 5)); hasNotified = true; } TimeLeft -= Time.deltaTime; if (TimeLeft > 0) { return; } TimeLeft += TimeBetweenTicks; Hub.playerStats.HurtPlayer(new PlayerStats.HitInfo(2f * intensity, "INFECTION", DamageTypes.Poison, 0), Hub.gameObject); } else { TimeLeft = TimeBetweenTicks; hasNotified = false; } }
public void NoEffect(string item) { Hub.hints.Show(new TextHint($"{item} had no effect on your infection!", new HintParameter[] { new StringHintParameter("") }, HintEffectPresets.FadeInAndOut(1, 2.5f, 1.5f), 5)); }
public void DecreaseIntensity(int Level) { PublicOnIntensityChange((byte)intensity, (byte)Level); if (intensity < 1) { CureInfection(); } else { Hub.hints.Show(new TextHint("Your infection's intensity has decreased!", new HintParameter[] { new StringHintParameter("") }, HintEffectPresets.FadeInAndOut(1, 2.5f, 1.5f), 5)); } }
public void CureInfection() { Hub.hints.Show(new TextHint("Your infection has been cured!", new HintParameter[] { new StringHintParameter("") }, HintEffectPresets.FadeInAndOut(1, 2.5f, 1.5f), 5)); ServerDisable(); }
public void OnUpgradingItems(UpgradingItemsEventArgs ev) { if (!Scp914Teleportation.enabledInGame) { return; } if (Scp914Teleportation.Instance.Config.TeleportEffects.ContainsKey(ev.KnobSetting)) { Log.Info("SCP-914 Teleportation activated"); int roomIndex = rnd.Next(0, Scp914Teleportation.Instance.Config.TeleportRooms.Count()); if (!Scp914Teleportation.Instance.Config.TeleportChance.ContainsKey(ev.KnobSetting)) { Log.Warn($"TeleportChance config does not provide a setting for the {ev.KnobSetting.ToString()} 914 setting. Aborting teleportation"); return; } foreach (Player Ply in ev.Players) { if (rnd.Next(0, 100) > Scp914Teleportation.Instance.Config.TeleportChance[ev.KnobSetting]) { if (Scp914Teleportation.Instance.Config.TeleportBackfire == true) { ApplyTeleportEffects(Ply, Scp914Teleportation.Instance.Config.TeleportEffects[ev.KnobSetting]); } return; } if (!Scp914Teleportation.Instance.Config.AffectedTeams.Contains(Ply.Team)) { return; } RoomType roomType = Scp914Teleportation.Instance.Config.TeleportRooms.ElementAt(roomIndex); Room teleportRoom = Map.Rooms.Where(r => r.Type == roomType).First(); if (Scp914Teleportation.Instance.Config.TeleportChangeMode == true) { roomIndex = rnd.Next(0, Scp914Teleportation.Instance.Config.TeleportRooms.Count()); } Timing.CallDelayed(0.1f, () => { Ply.Position = teleportRoom.Position + new Vector3(0, 2, 0); teleported.Add(Ply); Timing.CallDelayed(Timing.WaitForOneFrame, () => { ApplyTeleportEffects(Ply, Scp914Teleportation.Instance.Config.TeleportEffects[ev.KnobSetting]); }); }); } Timing.CallDelayed(0.5f, () => { if (Scp914Teleportation.Instance.Config.AlertSCPs == true) { // Notify players if (Scp914Teleportation.Instance.Config.AlertInformPlayer == true) { foreach (Player TeleportedPly in teleported) { if (TeleportedPly.Team == Team.SCP) { continue; // Prevent SCPs from being notified about other SCPs using SCP-914 to teleport. } TeleportedPly.ClearBroadcasts(); TeleportedPly.Broadcast(5, Scp914Teleportation.Instance.Config.TeleportPlayerMessage); } } // Notify SCPs foreach (Player SCP in Player.List) { if (SCP.Team == Team.SCP) { string stringToShow = "\n\n\n\n\n\n\n"; foreach (Player Escapee in teleported) { if (Escapee.Team == Team.SCP) { continue; // Prevent SCPs from being notified about other SCPs using SCP-914 to teleport. } stringToShow += Scp914Teleportation.Instance.Config.TeleportSCPMessage.Replace("{Name}", Escapee.Nickname).Replace("{Room}", GetRoomName(Escapee.CurrentRoom)).Replace("{Class}", $"<color={Escapee.Role.GetColor().ToHex()}>{Constants.ClassStrings[Escapee.Role.ToString()]}</color>") + "\n"; } SCP.ReferenceHub.hints.Show(new TextHint(stringToShow, new HintParameter[] { new StringHintParameter("") }, HintEffectPresets.FadeInAndOut(0.25f, 1f, 0.25f), 5f)); } } } }); } teleported.Clear(); }
private static void AddPunishment(FFInfo ffInfo) { ffInfo.Attacker.hints.Show(new TextHint("I Shouldn't Shoot Friendlies...", new HintParameter[] { new StringHintParameter("") }, HintEffectPresets.FadeInAndOut(1, 2.5f, 1.5f), 5)); float damage = Mathf.Clamp(ffInfo.HitInfo.Amount / 4, 5, 50); damage = Mathf.Clamp(damage, 0, ffInfo.Attacker.playerStats.Health - 1); ffInfo.Attacker.playerStats.HurtPlayer(new PlayerStats.HitInfo(damage, ffInfo.HitInfo.Attacker, ffInfo.HitInfo.GetDamageType(), ffInfo.Attacker.playerId), ffInfo.Attacker.gameObject); ffInfo.Attacker.inventory.SetCurItem(ItemType.None); if (ffInfo.FFPlayer.Triggers > 2) { ffInfo.Attacker.inventory.ServerDropAll(); } if (ffInfo.FFPlayer.Triggers == 4) { ffInfo.Attacker.playerEffectsController.EnableEffect <Amnesia>(10); } else if (ffInfo.FFPlayer.Triggers == 5) { ffInfo.Attacker.playerEffectsController.EnableEffect <Concussed>(45); } else if (ffInfo.FFPlayer.Triggers > 5) { ffInfo.Attacker.playerEffectsController.EnableEffect <Blinded>(20 * (ffInfo.FFPlayer.Triggers - 5)); ffInfo.Attacker.playerEffectsController.EnableEffect <Deafened>(20 * (ffInfo.FFPlayer.Triggers - 5)); ffInfo.Attacker.playerEffectsController.EnableEffect <Ensnared>(5 * (ffInfo.FFPlayer.Triggers - 5)); } //Base.Info($"{ffInfo.Attacker.nicknameSync.DisplayName} ({ffInfo.Attacker.characterClassManager.UserId}) was punished by FFDetector for Friendly Fire against {ffInfo.Target.nicknameSync.DisplayName} ({ffInfo.Target.characterClassManager.UserId})" + // $"\nPlayer Information: {ffInfo.Attacker.characterClassManager.CurClass} ({ffInfo.Attacker.characterClassManager.CurRole.team})" + // $"\nTarget Information: {ffInfo.Target.characterClassManager.CurClass} ({ffInfo.Target.characterClassManager.CurRole.team}) {(ffInfo.Target.handcuffs.CufferId > -1 ? "Disarmed" : "Not disarmed")} {(ffInfo.Target.playerEffectsController.GetEffect<SCP008>().Enabled ? "Infected" : "Not infected")}" + // $"\nDistance: {Vector3.Distance(ffInfo.Attacker.playerMovementSync.RealModelPosition, ffInfo.Target.playerMovementSync.RealModelPosition)}m Angle: {Vector3.Angle(ffInfo.Attacker.playerMovementSync.transform.forward, ffInfo.Attacker.playerMovementSync.transform.position - ffInfo.Target.GetComponent<PlayerMovementSync>().transform.position)} DamageType: {ffInfo.HitInfo.GetDamageType().name}" + // $"\nHostiles: {ffInfo.Hostiles.Count} Friendlies: {ffInfo.Friendlies.Count} Total: {ffInfo.NearbyPlayers.Count}"); }
private void SendHint(Player player, string msg, float time = 3f) { player.HintDisplay.Show(new TextHint(msg, new HintParameter[] { new StringHintParameter("") }, HintEffectPresets.FadeInAndOut(0.25f, 1f, 0f), time)); }
public void RunWhenDoorIsInteractedWith(InteractingDoorEventArgs ev) { if (ev.Player.Team == Team.SCP || ev.Player.Role == RoleType.Spectator) { return; } if (PlayersThatCanPryGates.Contains(ev.Player)) { ev.Door.PryGate(); } if (!Instance.Config.EnableDoorMessages) { return; } if (PlayersThatCanPryGates.Contains(ev.Player) && ev.Door.doorType == Door.DoorTypes.HeavyGate) { if (!ev.Player.IsBypassModeEnabled) { ev.Player.ReferenceHub.hints.Show(new TextHint( $"\n\n\n\n\n\n\n\n\n{Instance.Config.PryGateMessage}", new HintParameter[] { new StringHintParameter("") }, HintEffectPresets.FadeInAndOut(0.25f, 1f, 0f))); } else { ev.Player.ReferenceHub.hints.Show(new TextHint( $"\n\n\n\n\n\n\n\n\n{Instance.Config.PryGateBypassMessage}", new HintParameter[] { new StringHintParameter("") }, HintEffectPresets.FadeInAndOut(0.25f, 1f, 0f))); } } else { if (!ev.Player.IsBypassModeEnabled) { if (ev.Player.ItemInHandIsKeycard() && ev.Door.PermissionLevels != 0) { if (ev.IsAllowed) { ev.Player.ReferenceHub.hints.Show(new TextHint( $"\n\n\n\n\n\n\n\n\n{Instance.Config.UnlockedDoorMessage}", new HintParameter[] { new StringHintParameter("") }, HintEffectPresets.FadeInAndOut(0.25f, 1f, 0f))); } else { ev.Player.ReferenceHub.hints.Show(new TextHint( $"\n\n\n\n\n\n\n\n\n{Instance.Config.LockedDoorMessage}", new HintParameter[] { new StringHintParameter("") }, HintEffectPresets.FadeInAndOut(0.25f, 1f, 0f))); } } else if (!ev.Player.ItemInHandIsKeycard() && ev.Door.PermissionLevels != 0) { ev.Player.ReferenceHub.hints.Show(new TextHint( $"\n\n\n\n\n\n\n\n\n{Instance.Config.NeedKeycardMessage}", new HintParameter[] { new StringHintParameter("") }, HintEffectPresets.FadeInAndOut(0.25f, 1f, 0f))); } } else if (ev.Player.IsBypassModeEnabled && ev.Door.PermissionLevels != 0) { if (ev.Player.ItemInHandIsKeycard()) { ev.Player.ReferenceHub.hints.Show(new TextHint( $"\n\n\n\n\n\n\n\n\n{Instance.Config.BypassWithKeycardMessage}", new HintParameter[] { new StringHintParameter("") }, HintEffectPresets.FadeInAndOut(0.25f, 1f, 0f))); } else { ev.Player.ReferenceHub.hints.Show(new TextHint( $"\n\n\n\n\n\n\n\n\n{Instance.Config.BypassKeycardMessage}", new HintParameter[] { new StringHintParameter("") }, HintEffectPresets.FadeInAndOut(0.25f, 1f, 0f))); } } } }
public override void PublicOnClassChange(RoleType previousClass, RoleType newClass) { if (newClass == RoleType.Spectator) { ServerDisable(); return; } if (previousClass == RoleType.Spectator || newClass != RoleType.Scp0492) { return; } Hub.hints.Show(new TextHint("You have succumbed to your infection!", new HintParameter[] { new StringHintParameter("") }, HintEffectPresets.FadeInAndOut(1, 2.5f, 1.5f), 5)); ServerDisable(); }
public void RunWhenPlayerDrinksScp207(UsedMedicalItemEventArgs ev) { if (ev.Player != _ply || ev.Item != ItemType.SCP207) { return; } if (_ply.IsGodModeEnabled) { counter = 0; return; } if (counter < Instance.Config.Scp207DrinkLimit) { string messageToReplace = Instance.Config.DrinkingScp207Message.ReplaceAfterToken('%', new[] { new Tuple <string, object>("counter", counter) }); ev.Player.ReferenceHub.hints.Show(new TextHint($"\n\n\n\n\n\n\n\n\n{messageToReplace}", new HintParameter[] { new StringHintParameter("") }, HintEffectPresets.FadeInAndOut(0.25f, 1f, 0f))); } if (counter == Instance.Config.Scp207PryGateLimit) { string messageToReplace = Instance.Config.PryGatesWithScp207Message.ReplaceAfterToken('%', new[] { new Tuple <string, object>("counter", counter) }); if (!CreativeToolboxEventHandler.PlayersThatCanPryGates.Contains(_ply)) { CreativeToolboxEventHandler.PlayersThatCanPryGates.Add(_ply); ev.Player.ReferenceHub.hints.Show(new TextHint($"\n\n\n\n\n\n\n\n\n{messageToReplace}", new HintParameter[] { new StringHintParameter("") }, HintEffectPresets.FadeInAndOut(0.25f, 1f, 0f))); } } if (counter >= Instance.Config.Scp207DrinkLimit) { string messageToReplace = Instance.Config.ExplodeAfterScp207Message.ReplaceAfterToken('%', new[] { new Tuple <string, object>("counter", counter) }); if (CreativeToolboxEventHandler.PlayersThatCanPryGates.Contains(_ply)) { CreativeToolboxEventHandler.PlayersThatCanPryGates.Remove(_ply); } _ply.Health = 0; _ply.AdrenalineHealth = 0; _ply.Kill(); CreativeToolboxEventHandler.SpawnGrenadeOnPlayer(_ply, false); counter = 0; ev.Player.ReferenceHub.hints.Show(new TextHint($"\n\n\n\n\n\n\n\n\n{messageToReplace}", new HintParameter[] { new StringHintParameter("") }, HintEffectPresets.FadeInAndOut(0.25f, 1f, 0f))); } }