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); }
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; }); } }
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!"); }
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); }
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; } }