Ejemplo n.º 1
0
        public bool CanUseAbility(Player player, BlackoutAbility ability)
        {
            if (ConsumptionStacks[player] < AbilityStackRequirement)
            {
                player.ShowHint($"You are unable to use Blackout until you are power level {AbilityStackRequirement}. You are currently at {ConsumptionStacks[player]}. Gain power levels by killing players.");
                return(false);
            }

            DateTime usableTime = ability.LastUsed[player] + TimeSpan.FromSeconds(ability.Cooldown);
            bool     flag       = DateTime.Now > usableTime;

            if (!flag)
            {
                player.ShowHint($"You must wait another {Math.Round((DateTime.Now - usableTime).TotalSeconds, 2)} more seconds to use this ability.");
            }

            return(flag);
        }
Ejemplo n.º 2
0
        private void DoFlashEffect(Player player, float distance)
        {
            if (ResetConsumptionOnFlashed)
            {
                if (ConsumptionStacks[player] > 0)
                {
                    if (distance < 6 && ConsumptionStacks[player] > 1)
                    {
                        ConsumptionStacks[player]--;
                    }
                    else if (distance > 15)
                    {
                        ConsumptionStacks[player]++;
                    }

                    if ((ConsumptionStacks[player] / 2) >= 3)
                    {
                        ConsumptionStacks[player] -= 3;
                    }
                    else if ((ConsumptionStacks[player] / 2) >= 2)
                    {
                        ConsumptionStacks[player] -= 2;
                    }
                    else
                    {
                        ConsumptionStacks[player]--;
                    }
                }

                player.ShowHint($"You now have {ConsumptionStacks[player]} stacks of Consumption!", 10);
                int newIntensity = ConsumptionStacks[player] / (MaxConsumption / 2);
                player.ChangeEffectIntensity(EffectType.Scp207, (byte)newIntensity);
            }

            if (TeleportOnFlashed)
            {
                player.Position = Vector3.down * 1950f;

                Timing.CallDelayed(15f, () =>
                {
                    foreach (Player ply in Player.Get(Team.SCP))
                    {
                        if (player == ply)
                        {
                            continue;
                        }
                        player.Position = ply.Position + Vector3.up;
                        break;
                    }

                    Door hczArmoryDoor  = Exiled.API.Features.Map.GetDoorByName("HCZ_ARMORY");
                    Transform transform = hczArmoryDoor.Base.transform;
                    player.Position     = transform.position + transform.forward * 2f;
                });
            }
        }
Ejemplo n.º 3
0
        public void IncreasePower(Player player)
        {
            if (ConsumptionStacks[player] >= MaxConsumption)
            {
                return;
            }

            Log.Debug($"{Name} power increase for {player.Nickname}");
            ConsumptionStacks[player]++;

            int newIntensity = ConsumptionStacks[player] / (MaxConsumption / 2);

            player.ChangeEffectIntensity(EffectType.Scp207, (byte)newIntensity);
            player.ShowHint($"You now have {ConsumptionStacks[player]} stacks of Consumption!");
        }
Ejemplo n.º 4
0
        public bool Execute(ArraySegment <string> arguments, ICommandSender sender, out string response)
        {
            string broadcast;

            if (!sender.CheckPermission("scputils.broadcast"))
            {
                response = "<color=red> You need a higher administration level to use this command!</color>";
                return(false);
            }

            else if (arguments.Count < 3)
            {
                response = $"<color=yellow>Usage: {Command} <player> <hint/broadcast> <text></color>";
                return(false);
            }
            else
            {
                broadcast = string.Join(" ", arguments.Array, 3, arguments.Array.Length - 3);
                Exiled.API.Features.Player player = Exiled.API.Features.Player.Get(arguments.Array[1].ToString());
                if (player == null)
                {
                    response = "Invalid player!";
                    return(false);
                }
                switch (arguments.Array[2].ToString())
                {
                case "broadcast":
                case "bc":
                    player.Broadcast(ScpUtils.StaticInstance.Config.BroadcastDuration, broadcast, global::Broadcast.BroadcastFlags.Normal, false);
                    response = "Success!";
                    break;

                case "hint":
                case "h":
                    player.ShowHint(broadcast, ScpUtils.StaticInstance.Config.BroadcastDuration);
                    response = "Success!";
                    break;

                default:
                    response = "Invalid argument, you should use broadcast/bc or hint/h.";
                    break;
                }
            }

            return(true);
        }
Ejemplo n.º 5
0
        public static void RemovePlayer(EPlayer player)
        {
            switch (player.Team)
            {
            case Team.CDP:
                int     cdnum  = 0;
                EPlayer cdlast = null;
                foreach (EPlayer p in EPlayer.List)
                {
                    if (p.Team == Team.CDP)
                    {
                        cdnum++;
                        cdlast = p;
                    }
                }
                if (cdnum == 1 && cdlast != null)
                {
                    int index = new System.Random().Next(EPlugin.Instance.Config.ClassDMessages.Count);
                    if (EPlugin.Instance.Config.UseHints != false)
                    {
                        cdlast.Broadcast(EPlugin.Instance.Config.BroadcastDuration, EPlugin.Instance.Config.ClassDMessages[index]);
                    }
                    else
                    {
                        cdlast.ShowHint($"\n\n\n\n{EPlugin.Instance.Config.ClassDMessages[index]}", EPlugin.Instance.Config.BroadcastDuration);
                    }
                }
                break;

            case Team.RSC:
                int     scnum  = 0;
                EPlayer sclast = null;
                foreach (EPlayer p in EPlayer.List)
                {
                    if (p.Team == Team.CDP)
                    {
                        scnum++;
                        sclast = p;
                    }
                }
                if (scnum == 1 && sclast != null)
                {
                    int index = new System.Random().Next(EPlugin.Instance.Config.ScientistMessages.Count);
                    if (EPlugin.Instance.Config.UseHints != false)
                    {
                        sclast.Broadcast(EPlugin.Instance.Config.BroadcastDuration, EPlugin.Instance.Config.ScientistMessages[index]);
                    }
                    else
                    {
                        sclast.ShowHint($"\n\n\n\n{EPlugin.Instance.Config.ScientistMessages[index]}", EPlugin.Instance.Config.BroadcastDuration);
                    }
                }
                break;

            case Team.MTF:
                int     mtfnum  = 0;
                EPlayer mtflast = null;
                foreach (EPlayer p in EPlayer.List)
                {
                    if (p.Team == Team.CDP)
                    {
                        mtfnum++;
                        mtflast = p;
                    }
                }
                if (mtfnum == 1 && mtflast != null)
                {
                    int index = new System.Random().Next(EPlugin.Instance.Config.MTFMessages.Count);
                    if (EPlugin.Instance.Config.UseHints != false)
                    {
                        mtflast.Broadcast(EPlugin.Instance.Config.BroadcastDuration, EPlugin.Instance.Config.MTFMessages[index]);
                    }
                    else
                    {
                        mtflast.ShowHint($"\n\n\n\n{EPlugin.Instance.Config.MTFMessages[index]}", EPlugin.Instance.Config.BroadcastDuration);
                    }
                }
                break;

            case Team.CHI:
                int     chinum  = 0;
                EPlayer chilast = null;
                foreach (EPlayer p in EPlayer.List)
                {
                    if (p.Team == Team.CDP)
                    {
                        chinum++;
                        chilast = p;
                    }
                }
                if (chinum == 1 && chilast != null)
                {
                    int index = new System.Random().Next(EPlugin.Instance.Config.ChaosMessages.Count);
                    if (EPlugin.Instance.Config.UseHints != false)
                    {
                        chilast.Broadcast(EPlugin.Instance.Config.BroadcastDuration, EPlugin.Instance.Config.ChaosMessages[index]);
                    }
                    else
                    {
                        chilast.ShowHint($"\n\n\n\n{EPlugin.Instance.Config.ChaosMessages[index]}", EPlugin.Instance.Config.BroadcastDuration);
                    }
                }
                break;

            case Team.SCP:
                int     scpnum  = 0;
                EPlayer scplast = null;
                foreach (EPlayer p in EPlayer.List)
                {
                    if (p.Team == Team.CDP)
                    {
                        scpnum++;
                        scplast = p;
                    }
                }
                if (scpnum == 1 && scplast != null)
                {
                    int index = new System.Random().Next(EPlugin.Instance.Config.ScpMessages.Count);
                    if (EPlugin.Instance.Config.UseHints != false)
                    {
                        scplast.Broadcast(EPlugin.Instance.Config.BroadcastDuration, EPlugin.Instance.Config.ScpMessages[index]);
                    }
                    else
                    {
                        scplast.ShowHint($"\n\n\n\n{EPlugin.Instance.Config.ScpMessages[index]}", EPlugin.Instance.Config.BroadcastDuration);
                    }
                }
                break;

            case Team.TUT:
                int     tutnum  = 0;
                EPlayer tutlast = null;
                foreach (EPlayer p in EPlayer.List)
                {
                    if (p.Team == Team.CDP)
                    {
                        tutnum++;
                        tutlast = p;
                    }
                }
                if (tutnum == 1 && tutlast != null)
                {
                    int index = new System.Random().Next(EPlugin.Instance.Config.TutorialMessages.Count);
                    if (EPlugin.Instance.Config.UseHints != false)
                    {
                        tutlast.Broadcast(EPlugin.Instance.Config.BroadcastDuration, EPlugin.Instance.Config.TutorialMessages[index]);
                    }
                    else
                    {
                        tutlast.ShowHint($"\n\n\n\n{EPlugin.Instance.Config.TutorialMessages[index]}", EPlugin.Instance.Config.BroadcastDuration);
                    }
                }
                break;

            case Team.RIP:
                int     ripnum  = 0;
                EPlayer riplast = null;
                foreach (EPlayer p in EPlayer.List)
                {
                    if (p.Team == Team.CDP)
                    {
                        ripnum++;
                        riplast = p;
                    }
                }
                if (ripnum == 1 && riplast != null)
                {
                    int index = new System.Random().Next(EPlugin.Instance.Config.SpectatorMessages.Count);
                    if (EPlugin.Instance.Config.UseHints != false)
                    {
                        riplast.Broadcast(EPlugin.Instance.Config.BroadcastDuration, EPlugin.Instance.Config.SpectatorMessages[index]);
                    }
                    else
                    {
                        riplast.ShowHint($"\n\n\n\n{EPlugin.Instance.Config.SpectatorMessages[index]}", EPlugin.Instance.Config.BroadcastDuration);
                    }
                }
                break;
            }
        }