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}");
             * }*/
        }
Exemple #2
0
        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 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));
                }
            }
Exemple #4
0
 public void GiveTextHint(string message, float duration = 5f)
 {
     Hub.hints.Show(new TextHint(message, new HintParameter[]
     {
         new StringHintParameter("")
     }, HintEffectPresets.FadeInAndOut(duration), duration));
 }
Exemple #5
0
 internal void PlayerSpawn(SpawningEventArgs ev)
 {
     if (ev.Player.Role == RoleType.Scp079)
     {
         ev.Player.ReferenceHub.hints.Show(new TextHint(Better079Plugin.instance.Config.b079_spawn_msg, new HintParameter[] { new StringHintParameter("") }, new HintEffect[]
         {
             HintEffectPresets.TrailingPulseAlpha(0.5f, 1f, 0.5f, 2f, 0f, 3)
         }, 10f));
     }
 }
 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)));
            }
        }
Exemple #8
0
        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)));
            }
        }
Exemple #9
0
        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);
        }
Exemple #10
0
        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}");
        }
Exemple #11
0
        /*internal void ConsoleCmd(ConsoleCommandEvent ev)
         * {
         *  if (ev.Player.GetRole() == RoleType.Scp079)
         *  {
         *      string[] args = ev.Command.Split(' ');
         *      if (args[0].Equals(plugin.CommandPrefix))
         *      {
         *          if (args.Length == 2)
         *          {
         *              if (args[1].ToLower().Equals("help") || args[1].ToLower().Equals("commands") || args[1].ToLower().Equals("?"))
         *              {
         *                  ev.ReturnMessage = plugin.HelpMsgTitle + "\n" +
         *                      "\"." + plugin.CommandPrefix + " a1\" - " + plugin.HelpMsgA1 + " - " + plugin.A1Power + "+ AP - Tier " + (plugin.A1Tier + 1) + "+\n" +
         *                      "\"." + plugin.CommandPrefix + " a2\" - " + plugin.HelpMsgA2 + " - " + plugin.A2Power + "+ AP - Tier " + (plugin.A2Tier + 1) + "+\n" +
         *                      "\"." + plugin.CommandPrefix + " a3\" - " + plugin.HelpMsgA3 + " - " + plugin.A3Power + "+ AP - Tier " + (plugin.A3Tier + 1) + "+\n" +
         *                      "\"." + plugin.CommandPrefix + " a4\" - " + plugin.HelpMsgA4 + " - " + plugin.A4Power + "+ AP - Tier " + (plugin.A4Tier + 1) + "+\n";
         *                  return;
         *              }
         *
         *              if (args[1].ToLower().Equals("a1"))
         *              {
         *                  if (ev.Player.scp079PlayerScript.NetworkcurLvl < plugin.A1Tier)
         *                  {
         *                      ev.ReturnMessage = plugin.TierRequiredMsg.Replace("$tier", "" + (plugin.A1Tier + 1));
         *                      return;
         *                  }
         *                  if (ev.Player.scp079PlayerScript.NetworkcurMana >= plugin.A1Power)
         *                  {
         *                      ev.Player.scp079PlayerScript.NetworkcurMana -= plugin.A1Power;
         *                  }
         *                  else
         *                  {
         *                      ev.ReturnMessage = plugin.NoPowerMsg;
         *                      return;
         *                  }
         *                  var cams = GetSCPCameras();
         *                  if (cams.Count > 0)
         *                  {
         *                      Camera079 cam = cams[UnityEngine.Random.Range(0, cams.Count)];
         *                      ev.Player.scp079PlayerScript.CmdSwitchCamera(cam.cameraId, false);
         *                      ev.ReturnMessage = plugin.RunA1Msg;
         *                      return;
         *                  }
         *                  else
         *                  {
         *                      ev.ReturnMessage = plugin.FailA1Msg;
         *                      ev.Player.scp079PlayerScript.NetworkcurMana += plugin.A1Power;
         *                      return;
         *                  }
         *              }
         *
         *              if (args[1].ToLower().Equals("a2"))
         *              {
         *                  if (ev.Player.scp079PlayerScript.NetworkcurLvl < plugin.A2Tier)
         *                  {
         *                      ev.ReturnMessage = plugin.TierRequiredMsg.Replace("$tier", "" + (plugin.A2Tier + 1));
         *                      return;
         *                  }
         *                  if (ev.Player.scp079PlayerScript.NetworkcurMana >= plugin.A2Power)
         *                  {
         *                      ev.Player.scp079PlayerScript.NetworkcurMana -= plugin.A2Power;
         *                  }
         *                  else
         *                  {
         *                      ev.ReturnMessage = plugin.NoPowerMsg;
         *                      return;
         *                  }
         *                  if (Time.timeSinceLevelLoad - a2cooldown < plugin.A2Cooldown)
         *                  {
         *                      ev.Player.scp079PlayerScript.NetworkcurMana += plugin.A2Power;
         *                      ev.ReturnMessage = plugin.FailA2Msg;
         *                      return;
         *                  }
         *                  Room room = SCP079Room(ev.Player);
         *                  if (room == null)
         *                  {
         *                      ev.Player.scp079PlayerScript.NetworkcurMana += plugin.A2Power;
         *                      ev.ReturnMessage = plugin.FailA2Msg;
         *                      return;
         *                  }
         *                  if (room.Zone == ZoneType.Surface)
         *                  {
         *                      ev.Player.scp079PlayerScript.NetworkcurMana += plugin.A2Power;
         *                      ev.ReturnMessage = plugin.FailA2Msg;
         *                      return;
         *                  }
         *                  foreach (var item in plugin.A2BlacklistRooms)
         *                  {
         *                      if (room.Name.ToLower().Contains(item.ToLower()))
         *                      {
         *                          ev.Player.scp079PlayerScript.NetworkcurMana += plugin.A2Power;
         *                          ev.ReturnMessage = plugin.FailA2Msg;
         *                          return;
         *                      }
         *                  }
         *                  Timing.RunCoroutine(GasRoom(room, ev.Player));
         *                  ev.ReturnMessage = plugin.RunA2Msg;
         *                  return;
         *              }
         *
         *              if (args[1].ToLower().Equals("a3"))
         *              {
         *                  if (ev.Player.scp079PlayerScript.NetworkcurLvl < plugin.A3Tier)
         *                  {
         *                      ev.ReturnMessage = plugin.TierRequiredMsg.Replace("$tier", "" + (plugin.A3Tier + 1));
         *                      return;
         *                  }
         *                  if (ev.Player.scp079PlayerScript.NetworkcurMana >= plugin.A3Power)
         *                  {
         *                      ev.Player.scp079PlayerScript.NetworkcurMana -= plugin.A3Power;
         *                  }
         *                  else
         *                  {
         *                      ev.ReturnMessage = plugin.NoPowerMsg;
         *                      return;
         *                  }
         *                  Generator079.Generators[0].RpcCustomOverchargeForOurBeautifulModCreators(plugin.A3Timer, false);
         *                  ev.ReturnMessage = plugin.RunA3Msg;
         *                  return;
         *              }
         *
         *              if (args[1].ToLower().Equals("a4"))
         *              {
         *                  if (ev.Player.scp079PlayerScript.NetworkcurLvl < plugin.A4Tier)
         *                  {
         *                      ev.ReturnMessage = plugin.TierRequiredMsg.Replace("$tier", "" + (plugin.A4Tier + 1));
         *                      return;
         *                  }
         *                  if (ev.Player.scp079PlayerScript.NetworkcurMana >= plugin.A4Power)
         *                  {
         *                      ev.Player.scp079PlayerScript.NetworkcurMana -= plugin.A4Power;
         *                  }
         *                  else
         *                  {
         *                      ev.ReturnMessage = plugin.NoPowerMsg;
         *                      return;
         *                  }
         *                  var pos = ev.Player.scp079PlayerScript.currentCamera.transform.position;
         *                  GrenadeManager gm = ev.Player.GetComponent<GrenadeManager>();
         *                  GrenadeSettings settings = gm.availableGrenades.FirstOrDefault(g => g.inventoryID == ItemType.GrenadeFlash);
         *                  FlashGrenade flash = GameObject.Instantiate(settings.grenadeInstance).GetComponent<FlashGrenade>();
         *                  flash.fuseDuration = 0.5f;
         *                  flash.InitData(gm, Vector3.zero, Vector3.zero, 1f);
         *                  flash.transform.position = pos;
         *                  NetworkServer.Spawn(flash.gameObject);
         *                  ev.ReturnMessage = plugin.RunA4Msg;
         *                  return;
         *              }
         *              ev.ReturnMessage = plugin.HelpMsg.Replace("$prefix", "" + plugin.CommandPrefix);
         *              return;
         *          }
         *          ev.ReturnMessage = plugin.HelpMsg.Replace("$prefix", "" + plugin.CommandPrefix);
         *          return;
         *      }
         *  }
         * }*/

        public static IEnumerator <float> GasRoom(Room room, ReferenceHub scp)
        {
            a2cooldown = Time.timeSinceLevelLoad;
            if (!Better079Plugin.instance.Config.b079_a2_disable_cassie)
            {
                string str = ".g4 ";
                for (int i = Better079Plugin.instance.Config.b079_a2_timer; i > 0f; i--)
                {
                    str += ". .g4 ";
                }
                RespawnEffectsController.PlayCassieAnnouncement(str, false, false);
            }
            List <Door> doors = Map.Doors.FindAll((d) => Vector3.Distance(d.transform.position, room.Position) <= 20f);

            foreach (var item in doors)
            {
                item.NetworkisOpen = true;
                item.Networklocked = true;
            }
            for (int i = Better079Plugin.instance.Config.b079_a2_timer; i > 0f; i--)
            {
                foreach (var ply in PlayerManager.players)
                {
                    var player = new Player(ply);
                    if (player.Team != Team.SCP && player.CurrentRoom != null && player.CurrentRoom.Transform == room.Transform)
                    {
                        player.ReferenceHub.hints.Show(new TextHint(Better079Plugin.instance.Config.b079_msg_a2_warn.Replace("$seconds", "" + i), new HintParameter[] { new StringHintParameter("") }, new HintEffect[]
                        {
                            HintEffectPresets.TrailingPulseAlpha(0.5f, 1f, 0.5f, 2f, 0f, 3)
                        }, 1f));
                        //player.ClearBroadcasts();
                        //player.Broadcast(1, plugin.A2WarnMsg.Replace("$seconds", "" + i), true);
                        //PlayerManager.localPlayer.GetComponent<MTFRespawn>().RpcPlayCustomAnnouncement(".g3", false, false);
                    }
                }
                yield return(Timing.WaitForSeconds(1f));
            }
            foreach (var item in doors)
            {
                item.NetworkisOpen = false;
                item.Networklocked = true;
            }
            foreach (var ply in PlayerManager.players)
            {
                var player = new Player(ply);
                if (player.Team != Team.SCP && player.CurrentRoom != null && player.CurrentRoom.Transform == room.Transform)
                {
                    player.ReferenceHub.hints.Show(new TextHint(Better079Plugin.instance.Config.b079_msg_a2_active, new HintParameter[] { new StringHintParameter("") }, new HintEffect[]
                    {
                        HintEffectPresets.TrailingPulseAlpha(0.5f, 1f, 0.5f, 2f, 0f, 3)
                    }, 5f));
                }
            }
            for (int i = 0; i < Better079Plugin.instance.Config.b079_a2_gas_timer * 2; i++)
            {
                foreach (var ply in PlayerManager.players)
                {
                    var player = new Player(ply);
                    if (player.Team != Team.SCP && player.Role != RoleType.Spectator && player.CurrentRoom != null && player.CurrentRoom.Transform == room.Transform)
                    {
                        player.ReferenceHub.playerStats.HurtPlayer(new PlayerStats.HitInfo(10f, "WORLD", DamageTypes.Decont, 0), player.ReferenceHub.gameObject);
                        if (player.Role == RoleType.Spectator)
                        {
                            scp.scp079PlayerScript.AddExperience(Better079Plugin.instance.Config.b079_a2_exp);
                        }
                    }
                }
                yield return(Timing.WaitForSeconds(0.5f));
            }
            foreach (var item in doors)
            {
                item.Networklocked = false;
            }
        }
Exemple #12
0
        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;
            }
        }
Exemple #13
0
 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));
 }
Exemple #14
0
        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));
            }
        }
Exemple #15
0
 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();
 }
Exemple #16
0
        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 static void SendTextHint(this Player player, string text, float time) => player.ReferenceHub.hints.Show(new TextHint(text, new HintParameter[] { new StringHintParameter(string.Empty) }, new HintEffect[] { HintEffectPresets.TrailingPulseAlpha(0.5f, 1f, 0.5f, 2f, 0f, 2) }, time));
Exemple #18
0
 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));
 }
Exemple #19
0
        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 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();
        }
        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)));
            }
        }