diff --git a/UltimateAFK/AFKComponent.cs b/UltimateAFK/AFKComponent.cs index ced8af9..75ba435 100644 --- a/UltimateAFK/AFKComponent.cs +++ b/UltimateAFK/AFKComponent.cs @@ -5,244 +5,237 @@ using Exiled.API.Features; using Exiled.Loader; using PlayableScps; -using scp035.API; using System.Reflection; using Exiled.API.Enums; +using System.Collections.Generic; +using Exiled.API.Features.Items; namespace UltimateAFK { - public class AFKComponent : MonoBehaviour - { - public MainClass plugin; - - public bool disabled = false; - - Player ply; - - public Vector3 AFKLastPosition; - public Vector3 AFKLastAngle; - - public int AFKTime = 0; - public int AFKCount = 0; - private float timer = 0.0f; - - // Do not change this delay. It will screw up the detection - public float delay = 1.0f; - - private Player TryGet035() => Scp035Data.GetScp035(); - private void TrySpawn035(Player player) => Scp035Data.Spawn035(player); - - // Expose replacing player for plugin support - public Player PlayerToReplace; - - - void Awake() - { - ply = Player.Get(gameObject); - } - - void Update() - { - timer += Time.deltaTime; - if (timer > delay) - { - timer = 0f; - if (!this.disabled) - { - try - { - AFKChecker(); - } - catch (Exception e) - { - Log.Error(e); - } - } - } - } - - // Called every 1 second according to the player's Update function. This is way more efficient than the old way of doing a forloop for every player. - // Also, since the gameObject for the player is deleted when they disconnect, we don't need to worry about cleaning any variables :) - private void AFKChecker() - { - //Log.Info($"AFK Time: {this.AFKTime} AFK Count: {this.AFKCount}"); - if (this.ply.Team == Team.RIP || Player.List.Count() <= plugin.Config.MinPlayers || (plugin.Config.IgnoreTut && this.ply.Team == Team.TUT)) return; - - bool isScp079 = (this.ply.Role == RoleType.Scp079); - bool scp096TryNotToCry = false; - - // When SCP096 is in the state "TryNotToCry" he cannot move or it will cancel, - // therefore, we don't want to AFK check 096 while he's in this state. - if (this.ply.Role == RoleType.Scp096) - { - PlayableScps.Scp096 scp096 = this.ply.ReferenceHub.scpsController.CurrentScp as PlayableScps.Scp096; - scp096TryNotToCry = (scp096.PlayerState == Scp096PlayerState.TryNotToCry); - } - - Vector3 CurrentPos = this.ply.Position; - Vector3 CurrentAngle = (isScp079) ? this.ply.Camera.targetPosition.position : this.ply.Rotation; - - if (CurrentPos != this.AFKLastPosition || CurrentAngle != this.AFKLastAngle || scp096TryNotToCry) - { - this.AFKLastPosition = CurrentPos; - this.AFKLastAngle = CurrentAngle; - this.AFKTime = 0; - PlayerToReplace = null; - return; - } - - // The player hasn't moved past this point. - this.AFKTime++; - - // If the player hasn't reached the time yet don't continue. - if (this.AFKTime < plugin.Config.AfkTime) return; - - // Check if we're still in the "grace" period - int secondsuntilspec = (plugin.Config.AfkTime + plugin.Config.GraceTime) - this.AFKTime; - if (secondsuntilspec > 0) - { - string warning = plugin.Config.MsgGrace; - warning = warning.Replace("%timeleft%", secondsuntilspec.ToString()); - - this.ply.ClearBroadcasts(); - this.ply.Broadcast(1, $"{plugin.Config.MsgPrefix} {warning}"); - return; - } - - // The player is AFK and action will be taken. - Log.Info($"{this.ply.Nickname} ({this.ply.UserId}) was detected as AFK!"); - this.AFKTime = 0; - - // Let's make sure they are still alive before doing any replacement. - if (this.ply.Team == Team.RIP) return; - - if (plugin.Config.TryReplace && !IsPastReplaceTime()) - { - Assembly easyEvents = Loader.Plugins.FirstOrDefault(pl => pl.Name == "EasyEvents")?.Assembly; - - var roleEasyEvents = easyEvents?.GetType("EasyEvents.Util")?.GetMethod("GetRole")?.Invoke(null, new object[] { this.ply }); - - // SCP035 Support (Credit DCReplace) - bool is035 = false; - try - { - is035 = this.ply.Id == TryGet035()?.Id; - } - catch (Exception e) - { - Log.Debug($"SCP-035 is not installed, skipping method call: {e}"); - } - - // Credit: DCReplace :) - // I mean at this point 90% of this has been rewritten lol... - var inventory = this.ply.Inventory.items.Select(x => x.id).ToList(); - - RoleType role = this.ply.Role; - Vector3 pos = this.ply.Position; - float health = this.ply.Health; - - // New strange ammo system because the old one was fucked. - uint ammo1 = this.ply.Ammo[(int)AmmoType.Nato556]; - uint ammo2 = this.ply.Ammo[(int)AmmoType.Nato762]; - uint ammo3 = this.ply.Ammo[(int)AmmoType.Nato9]; - - // Stuff for 079 - byte Level079 = 0; - float Exp079 = 0f, AP079 = 0f; - if (isScp079) - { - Level079 = this.ply.Level; - Exp079 = this.ply.Experience; - AP079 = this.ply.Energy; - } - - PlayerToReplace = Player.List.FirstOrDefault(x => x.Role == RoleType.Spectator && x.UserId != string.Empty && !x.IsOverwatchEnabled && x != this.ply); - if (PlayerToReplace != null) - { - // Make the player a spectator first so other plugins can do things on player changing role with uAFK. - this.ply.Inventory.Clear(); // Clear their items to prevent dupes. - this.ply.SetRole(RoleType.Spectator); - this.ply.Broadcast(30, $"{plugin.Config.MsgPrefix} {plugin.Config.MsgFspec}"); - - PlayerToReplace.SetRole(role); - - Timing.CallDelayed(0.3f, () => - { - if (is035) - { - try - { - TrySpawn035(PlayerToReplace); - } - catch (Exception e) - { - Log.Debug($"SCP-035 is not installed, skipping method call: {e}"); - } - } - PlayerToReplace.Position = pos; - - PlayerToReplace.ClearInventory(); - PlayerToReplace.ResetInventory(inventory); - - PlayerToReplace.Health = health; - - PlayerToReplace.Ammo[(int)AmmoType.Nato556] = ammo1; - PlayerToReplace.Ammo[(int)AmmoType.Nato762] = ammo2; - PlayerToReplace.Ammo[(int)AmmoType.Nato9] = ammo3; - - if (isScp079) - { - PlayerToReplace.Level = Level079; - PlayerToReplace.Experience = Exp079; - PlayerToReplace.Energy = AP079; - } - - PlayerToReplace.Broadcast(10, $"{plugin.Config.MsgPrefix} {plugin.Config.MsgReplace}"); - if (roleEasyEvents != null) easyEvents?.GetType("EasyEvents.CustomRoles")?.GetMethod("ChangeRole")?.Invoke(null, new object[] { PlayerToReplace, roleEasyEvents }); - PlayerToReplace = null; - }); - } - else - { - // Couldn't find a valid player to spawn, just ForceToSpec anyways. - ForceToSpec(this.ply); - } - } - else - { - // Replacing is disabled, just ForceToSpec - ForceToSpec(this.ply); - } - // If it's -1 we won't be kicking at all. - if (plugin.Config.NumBeforeKick != -1) - { - // Increment AFK Count - this.AFKCount++; - if (this.AFKCount >= plugin.Config.NumBeforeKick) - { - // Since this.AFKCount is greater than the config we're going to kick that player for being AFK too many times in one match. - ServerConsole.Disconnect(this.gameObject, plugin.Config.MsgKick); - } - } - } - - private void ForceToSpec(Player hub) - { - hub.SetRole(RoleType.Spectator); - hub.Broadcast(30, $"{plugin.Config.MsgPrefix} {plugin.Config.MsgFspec}"); - } - - private bool IsPastReplaceTime() - { - if (plugin.Config.MaxReplaceTime != -1) - { - if (Round.ElapsedTime.TotalSeconds > plugin.Config.MaxReplaceTime) - { - Log.Info("Since we are past the allowed replace time, we will not look for replacement player."); - return true; - } - } - return false; - } - } + public class AFKComponent : MonoBehaviour + { + public MainClass plugin; + + public bool disabled = false; + + Player ply; + + public Vector3 AFKLastPosition; + public Vector3 AFKLastAngle; + + public int AFKTime = 0; + public int AFKCount = 0; + private float timer = 0.0f; + + // Do not change this delay. It will screw up the detection + public float delay = 1.0f; + + // Expose replacing player for plugin support + public Player PlayerToReplace; + + + void Awake() + { + ply = Player.Get(gameObject); + } + + void Update() + { + timer += Time.deltaTime; + if (timer > delay) + { + timer = 0f; + //Log.Info(this.disabled); + if (!this.disabled) + { + try + { + AFKChecker(); + } + catch (Exception e) + { + Log.Error(e); + } + } + } + } + + // Called every 1 second according to the player's Update function. This is way more efficient than the old way of doing a forloop for every player. + // Also, since the gameObject for the player is deleted when they disconnect, we don't need to worry about cleaning any variables :) + private void AFKChecker() + { + //Log.Info($"AFK Time: {this.AFKTime} AFK Count: {this.AFKCount}"); + if (this.ply.Team == Team.RIP || Player.List.Count() <= plugin.Config.MinPlayers || (plugin.Config.IgnoreTut && this.ply.Team == Team.TUT)) return; + + bool isScp079 = (this.ply.Role == RoleType.Scp079); + bool scp096TryNotToCry = false; + + // When SCP096 is in the state "TryNotToCry" he cannot move or it will cancel, + // therefore, we don't want to AFK check 096 while he's in this state. + if (this.ply.Role == RoleType.Scp096) + { + PlayableScps.Scp096 scp096 = this.ply.ReferenceHub.scpsController.CurrentScp as PlayableScps.Scp096; + scp096TryNotToCry = (scp096.PlayerState == Scp096PlayerState.TryNotToCry); + } + + Vector3 CurrentPos = this.ply.Position; + Vector3 CurrentAngle = (isScp079) ? this.ply.Camera.targetPosition.position : this.ply.Rotation; + + if (CurrentPos != this.AFKLastPosition || CurrentAngle != this.AFKLastAngle || scp096TryNotToCry) + { + this.AFKLastPosition = CurrentPos; + this.AFKLastAngle = CurrentAngle; + this.AFKTime = 0; + PlayerToReplace = null; + return; + } + + // The player hasn't moved past this point. + this.AFKTime++; + + // If the player hasn't reached the time yet don't continue. + if (this.AFKTime < plugin.Config.AfkTime) return; + + // Check if we're still in the "grace" period + int secondsuntilspec = (plugin.Config.AfkTime + plugin.Config.GraceTime) - this.AFKTime; + if (secondsuntilspec > 0) + { + string warning = plugin.Config.MsgGrace; + warning = warning.Replace("%timeleft%", secondsuntilspec.ToString()); + + this.ply.ClearBroadcasts(); + this.ply.Broadcast(1, $"{plugin.Config.MsgPrefix} {warning}", Broadcast.BroadcastFlags.Normal, false); + return; + } + + // The player is AFK and action will be taken. + Log.Info($"{this.ply.Nickname} ({this.ply.UserId}) was detected as AFK!"); + this.AFKTime = 0; + + // Let's make sure they are still alive before doing any replacement. + if (this.ply.Team == Team.RIP) return; + + if (plugin.Config.TryReplace && !IsPastReplaceTime()) + { + Assembly easyEvents = Loader.Plugins.FirstOrDefault(pl => pl.Name == "EasyEvents")?.Assembly; + + var roleEasyEvents = easyEvents?.GetType("EasyEvents.Util")?.GetMethod("GetRole")?.Invoke(null, new object[] { this.ply }); + + // SCP035 Support (Credit DCReplace) + bool is035 = this.ply.Id == TryGet035()?.Id; + + // Credit: DCReplace :) + // I mean at this point 90% of this has been rewritten lol... + List inventory = this.ply.Items.Select(item => item.Type).ToList(); + + RoleType role = this.ply.Role; + Vector3 pos = this.ply.Position; + float health = this.ply.Health; + + // New strange ammo system because the old one was fucked. + Dictionary ammo = new Dictionary(); + foreach (ItemType ammoType in this.ply.Ammo.Keys) + { + ammo.Add(ammoType, this.ply.Ammo[ammoType]); + } + + // Stuff for 079 + byte Level079 = 0; + float Exp079 = 0f, AP079 = 0f; + if (isScp079) + { + Level079 = this.ply.Level; + Exp079 = this.ply.Experience; + AP079 = this.ply.Energy; + } + + PlayerToReplace = Player.List.FirstOrDefault(x => x.Role == RoleType.Spectator && x.UserId != string.Empty && !x.IsOverwatchEnabled && x != this.ply); + if (PlayerToReplace != null) + { + // Make the player a spectator first so other plugins can do things on player changing role with uAFK. + this.ply.ClearInventory(); // Clear their items to prevent dupes. + this.ply.SetRole(RoleType.Spectator); + this.ply.Broadcast(30, $"{plugin.Config.MsgPrefix} {plugin.Config.MsgFspec}"); + + PlayerEvents.ReplacingPlayers.Add(PlayerToReplace, new AFKData() + { + afkComp = this, + spawnLocation = pos, + ammo = ammo, + items = inventory, + is079 = isScp079, + level = this.ply.Level, + xp = this.ply.Experience, + energy = this.ply.Energy, + health = health, + roleEasyEvents = roleEasyEvents + }); + + if (is035) + { + TrySpawn035(PlayerToReplace); + } + else + { + PlayerToReplace.SetRole(role); + } + } + else + { + // Couldn't find a valid player to spawn, just ForceToSpec anyways. + ForceToSpec(this.ply); + } + } + else + { + // Replacing is disabled, just ForceToSpec + ForceToSpec(this.ply); + } + // If it's -1 we won't be kicking at all. + if (plugin.Config.NumBeforeKick != -1) + { + // Increment AFK Count + this.AFKCount++; + if (this.AFKCount >= plugin.Config.NumBeforeKick) + { + // Since this.AFKCount is greater than the config we're going to kick that player for being AFK too many times in one match. + ServerConsole.Disconnect(this.gameObject, plugin.Config.MsgKick); + } + } + } + + private void ForceToSpec(Player hub) + { + hub.SetRole(RoleType.Spectator); + hub.Broadcast(30, $"{plugin.Config.MsgPrefix} {plugin.Config.MsgFspec}"); + } + + private Player TryGet035() + { + Player scp035 = null; + if (Loader.Plugins.FirstOrDefault(pl => pl.Name == "scp035") != null) + scp035 = (Player)Loader.Plugins.First(pl => pl.Name == "scp035").Assembly.GetType("scp035.API.Scp035Data").GetMethod("GetScp035", BindingFlags.Public | BindingFlags.Static).Invoke(null, null); + return scp035; + } + private void TrySpawn035(Player player) + { + if (Loader.Plugins.FirstOrDefault(pl => pl.Name == "scp035") != null) + { + Loader.Plugins.First(pl => pl.Name == "scp035").Assembly.GetType("scp035.API.Scp035Data").GetMethod("Spawn035", BindingFlags.Public | BindingFlags.Static).Invoke(null, new object[] { player }); + } + } + + private bool IsPastReplaceTime() + { + if (plugin.Config.MaxReplaceTime != -1) + { + if (Round.ElapsedTime.TotalSeconds > plugin.Config.MaxReplaceTime) + { + Log.Info("Since we are past the allowed replace time, we will not look for replacement player."); + return true; + } + } + return false; + } + } } diff --git a/UltimateAFK/AFKData.cs b/UltimateAFK/AFKData.cs new file mode 100644 index 0000000..1985218 --- /dev/null +++ b/UltimateAFK/AFKData.cs @@ -0,0 +1,28 @@ +using Exiled.API.Features.Items; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using UnityEngine; + +namespace UltimateAFK +{ + struct AFKData + { + public AFKComponent afkComp; + + public Vector3 spawnLocation; + public Dictionary ammo; + public List items; + + public float health; + + public bool is079; + public byte level; + public float xp; + public float energy; + + public object roleEasyEvents; + } +} diff --git a/UltimateAFK/Config.cs b/UltimateAFK/Config.cs index 868f589..625ed13 100644 --- a/UltimateAFK/Config.cs +++ b/UltimateAFK/Config.cs @@ -1,32 +1,32 @@ namespace UltimateAFK { - using System.ComponentModel; - using Exiled.API.Interfaces; + using System.ComponentModel; + using Exiled.API.Interfaces; - public sealed class Config : IConfig - { - [Description("Is the plugin enabled?")] - public bool IsEnabled { get; set; } = true; - [Description("Minimum required players for uAFK to be active.")] - public int MinPlayers { get; set; } = 2; - [Description("Do AFK players get replaced by spectators?")] - public bool TryReplace { get; private set; } = true; - [Description("Should Tutorials be ignored?")] - public bool IgnoreTut { get; private set; } = false; - [Description("How long can player not move?")] - public int AfkTime { get; private set; } = 30; - [Description("How long to wait before player gets kicked after getting a warning for not moving?")] - public int GraceTime { get; private set; } = 15; - [Description("After how many changes to spectator for AFK should player get kicked?")] - public int NumBeforeKick { get; private set; } = 2; - [Description("Maximum replace time, if the round time is past this value it will not replace the player (Set to -1 to disable)")] - public int MaxReplaceTime { get; private set; } = -1; - [Description("Don't touch this if you do not understand the repercussions! - Ignore Perm and IP Checks.")] - public bool IgnorePermissionsAndIP { get; private set; } = false; - public string MsgPrefix { get; private set; } = "[uAFK]"; - public string MsgGrace { get; private set; } = "You will be moved to spectator in %timeleft% seconds if you do not move!"; - public string MsgFspec { get; private set; } = "You were detected as AFK and automatically moved to spectator!"; - public string MsgKick { get; private set; } = "[Kicked by uAFK] You were AFK for too long!"; - public string MsgReplace { get; private set; } = "You have replaced a player that was AFK."; - } + public sealed class Config : IConfig + { + [Description("Is the plugin enabled?")] + public bool IsEnabled { get; set; } = true; + [Description("Minimum required players for uAFK to be active.")] + public int MinPlayers { get; set; } = 2; + [Description("Do AFK players get replaced by spectators?")] + public bool TryReplace { get; private set; } = true; + [Description("Should Tutorials be ignored?")] + public bool IgnoreTut { get; private set; } = false; + [Description("How long can player not move?")] + public int AfkTime { get; private set; } = 30; + [Description("How long to wait before player gets kicked after getting a warning for not moving?")] + public int GraceTime { get; private set; } = 15; + [Description("After how many changes to spectator for AFK should player get kicked?")] + public int NumBeforeKick { get; private set; } = 2; + [Description("Maximum replace time, if the round time is past this value it will not replace the player (Set to -1 to disable)")] + public int MaxReplaceTime { get; private set; } = -1; + [Description("Don't touch this if you do not understand the repercussions! - Ignore Perm and IP Checks.")] + public bool IgnorePermissionsAndIP { get; private set; } = false; + public string MsgPrefix { get; private set; } = "[uAFK]"; + public string MsgGrace { get; private set; } = "You will be moved to spectator in %timeleft% seconds if you do not move!"; + public string MsgFspec { get; private set; } = "You were detected as AFK and automatically moved to spectator!"; + public string MsgKick { get; private set; } = "[Kicked by uAFK] You were AFK for too long!"; + public string MsgReplace { get; private set; } = "You have replaced a player that was AFK."; + } } diff --git a/UltimateAFK/MainClass.cs b/UltimateAFK/MainClass.cs index 84cb339..1349770 100644 --- a/UltimateAFK/MainClass.cs +++ b/UltimateAFK/MainClass.cs @@ -43,59 +43,63 @@ using Handlers = Exiled.Events.Handlers; using Exiled.API.Enums; using Exiled.API.Features; +using HarmonyLib; namespace UltimateAFK { - public class MainClass : Plugin - { - public override string Author { get; } = "Thomasjosif"; - public override string Name { get; } = "Ultimate AFK"; - public override string Prefix { get; } = "uAFK"; - public override Version Version { get; } = new Version(3, 1, 6); - public override Version RequiredExiledVersion { get; } = new Version(2, 2, 4); - public PlayerEvents PlayerEvents; + public class MainClass : Plugin + { + public override string Author { get; } = "Thomasjosif"; + public override string Name { get; } = "Ultimate AFK"; + public override string Prefix { get; } = "uAFK"; + public override Version Version { get; } = new Version(3, 1, 6); + public PlayerEvents PlayerEvents; - public override PluginPriority Priority { get; } = PluginPriority.Medium; + public override PluginPriority Priority { get; } = PluginPriority.Medium; - public override void OnEnabled() - { - base.OnEnabled(); - try - { - PlayerEvents = new PlayerEvents(this); + public override void OnEnabled() + { + base.OnEnabled(); + try + { + PlayerEvents = new PlayerEvents(this); - Handlers.Player.Verified += PlayerEvents.OnPlayerVerified; - Handlers.Player.ChangingRole += PlayerEvents.OnSetClass; - Handlers.Player.Shooting += PlayerEvents.OnPlayerShoot; - Handlers.Player.InteractingDoor += PlayerEvents.OnDoorInteract; - Handlers.Scp914.Activating += PlayerEvents.On914Activate; - Handlers.Scp914.ChangingKnobSetting += PlayerEvents.On914Change; - Handlers.Player.InteractingLocker += PlayerEvents.OnLockerInteract; - Handlers.Player.ItemDropped += PlayerEvents.OnDropItem; - Handlers.Scp079.GainingExperience += PlayerEvents.OnSCP079Exp; + Handlers.Player.Verified += PlayerEvents.OnPlayerVerified; + Handlers.Player.ChangingRole += PlayerEvents.OnSetClass; + Handlers.Player.Shooting += PlayerEvents.OnPlayerShoot; + Handlers.Player.InteractingDoor += PlayerEvents.OnDoorInteract; + Handlers.Scp914.Activating += PlayerEvents.On914Activate; + Handlers.Scp914.ChangingKnobSetting += PlayerEvents.On914Change; + Handlers.Player.InteractingLocker += PlayerEvents.OnLockerInteract; + Handlers.Player.DroppingItem += PlayerEvents.OnDropItem; + Handlers.Scp079.GainingExperience += PlayerEvents.OnSCP079Exp; + Handlers.Player.Spawning += PlayerEvents.OnSpawning; + Handlers.Server.RoundStarted += PlayerEvents.OnRoundStarted; - Log.Info($"UltimateAFK plugin loaded.\n Written by Thomasjosif for King's Playground"); - } - catch (Exception e) - { - Log.Error($"There was an error loading the plugin: {e}"); - } + Log.Info($"UltimateAFK plugin loaded.\n Written by Thomasjosif for King's Playground"); + } + catch (Exception e) + { + Log.Error($"There was an error loading the plugin: {e}"); + } - } - public override void OnDisabled() - { - base.OnDisabled(); - Handlers.Player.Verified -= PlayerEvents.OnPlayerVerified; - Handlers.Player.ChangingRole -= PlayerEvents.OnSetClass; - Handlers.Player.Shooting -= PlayerEvents.OnPlayerShoot; - Handlers.Player.InteractingDoor -= PlayerEvents.OnDoorInteract; - Handlers.Scp914.Activating -= PlayerEvents.On914Activate; - Handlers.Scp914.ChangingKnobSetting -= PlayerEvents.On914Change; - Handlers.Player.InteractingLocker -= PlayerEvents.OnLockerInteract; - Handlers.Player.ItemDropped -= PlayerEvents.OnDropItem; - Handlers.Scp079.GainingExperience -= PlayerEvents.OnSCP079Exp; + } + public override void OnDisabled() + { + base.OnDisabled(); + Handlers.Player.Verified -= PlayerEvents.OnPlayerVerified; + Handlers.Player.ChangingRole -= PlayerEvents.OnSetClass; + Handlers.Player.Shooting -= PlayerEvents.OnPlayerShoot; + Handlers.Player.InteractingDoor -= PlayerEvents.OnDoorInteract; + Handlers.Scp914.Activating -= PlayerEvents.On914Activate; + Handlers.Scp914.ChangingKnobSetting -= PlayerEvents.On914Change; + Handlers.Player.InteractingLocker -= PlayerEvents.OnLockerInteract; + Handlers.Player.DroppingItem -= PlayerEvents.OnDropItem; + Handlers.Scp079.GainingExperience -= PlayerEvents.OnSCP079Exp; + Handlers.Player.Spawning -= PlayerEvents.OnSpawning; + Handlers.Server.RoundStarted -= PlayerEvents.OnRoundStarted; - PlayerEvents = null; - } - } + PlayerEvents = null; + } + } } \ No newline at end of file diff --git a/UltimateAFK/PlayerEvents.cs b/UltimateAFK/PlayerEvents.cs index 1f55f64..bd5b7a5 100644 --- a/UltimateAFK/PlayerEvents.cs +++ b/UltimateAFK/PlayerEvents.cs @@ -5,13 +5,17 @@ using Exiled.Permissions.Extensions; using Exiled.Loader; using System.Linq; +using System.Collections.Generic; +using MEC; namespace UltimateAFK { - public class PlayerEvents - { + public class PlayerEvents + { public MainClass plugin; + internal static Dictionary ReplacingPlayers = new Dictionary(); + public PlayerEvents(MainClass plugin) { this.plugin = plugin; @@ -33,14 +37,21 @@ public void OnSetClass(ChangingRoleEventArgs ev) AFKComponent afkComponent = ev.Player.GameObject.gameObject.GetComponent(); if (afkComponent != null) - { + { if (!plugin.Config.IgnorePermissionsAndIP) if (ev.Player.CheckPermission("uafk.ignore") || ev.Player.IPAddress == "127.0.0.1") //127.0.0.1 is sometimes used for "Pets" which causes issues afkComponent.disabled = true; if (IsGhost(ev.Player)) - afkComponent.disabled = true; + afkComponent.disabled = true; + } + + if (ReplacingPlayers.ContainsKey(ev.Player)) + { + AFKData data = ReplacingPlayers[ev.Player]; + ev.Items.Clear(); + ev.Items.AddRange(data.items); } - + } catch (Exception e) @@ -110,7 +121,7 @@ public void OnLockerInteract(InteractingLockerEventArgs ev) Log.Error($"ERROR In OnLockerInteract(): {e}"); } } - public void OnDropItem(ItemDroppedEventArgs ev) + public void OnDropItem(DroppingItemEventArgs ev) { try { @@ -134,6 +145,42 @@ public void OnSCP079Exp(GainingExperienceEventArgs ev) } } + public void OnRoundStarted() + { + ReplacingPlayers.Clear(); + } + + public void OnSpawning(SpawningEventArgs ev) + { + if (ReplacingPlayers.ContainsKey(ev.Player)) + { + AFKData data = ReplacingPlayers[ev.Player]; + data.afkComp.PlayerToReplace = null; + ev.Position = data.spawnLocation; + ev.Player.Broadcast(10, $"{plugin.Config.MsgPrefix} {plugin.Config.MsgReplace}"); + Timing.CallDelayed(0.4f, () => + { + Assembly easyEvents = Loader.Plugins.FirstOrDefault(pl => pl.Name == "EasyEvents")?.Assembly; + ev.Player.Health = data.health; + foreach (ItemType ammoType in data.ammo.Keys) + { + ev.Player.Inventory.UserInventory.ReserveAmmo[ammoType] = data.ammo[ammoType]; + ev.Player.Inventory.SendAmmoNextFrame = true; + } + + if (data.is079) + { + ev.Player.Level = data.level; + ev.Player.Experience = data.xp; + ev.Player.Energy = data.energy; + } + + if (data.roleEasyEvents != null) easyEvents?.GetType("EasyEvents.CustomRoles")?.GetMethod("ChangeRole")?.Invoke(null, new object[] { ev.Player, data.roleEasyEvents }); + PlayerEvents.ReplacingPlayers.Remove(ev.Player); + }); + } + } + /// /// Reset the AFK time of a player. /// Thanks iopietro! @@ -149,7 +196,7 @@ public void ResetAFKTime(Player player) if (afkComponent != null) afkComponent.AFKTime = 0; - + } catch (Exception e) { diff --git a/UltimateAFK/UltimateAFK.csproj b/UltimateAFK/UltimateAFK.csproj index d615735..2904900 100644 --- a/UltimateAFK/UltimateAFK.csproj +++ b/UltimateAFK/UltimateAFK.csproj @@ -30,8 +30,10 @@ TRACE prompt 4 + true + @@ -46,55 +48,51 @@ - - False - ..\..\..\EXILED_REFERENCES\0Harmony.dll + + C:\Users\Steven\AppData\Roaming\EXILED\Plugins\dependencies\0Harmony.dll - - False - ..\..\..\EXILED_REFERENCES\Assembly-CSharp-firstpass.dll + + ..\..\..\..\SCPSLServer\SCPSL_Data\Managed\Assembly-CSharp-firstpass.dll - ..\..\..\EXILED_REFERENCES\Assembly-CSharp-Publicized.dll + ..\..\..\..\SCPSLServer\SCPSL_Data\Managed\Assembly-CSharp-Publicized.dll - - False - ..\..\..\EXILED_REFERENCES\CommandSystem.Core.dll + + ..\..\..\..\SCPSLServer\SCPSL_Data\Managed\CommandSystem.Core.dll - - ..\packages\EXILED.2.2.4\lib\net472\Exiled.API.dll + + ..\packages\EXILED.3.0.0-alpha.70\lib\net472\Exiled.API.dll - - ..\packages\EXILED.2.2.4\lib\net472\Exiled.Bootstrap.dll + + ..\packages\EXILED.3.0.0-alpha.70\lib\net472\Exiled.Bootstrap.dll - - ..\packages\EXILED.2.2.4\lib\net472\Exiled.Events.dll + + ..\packages\EXILED.3.0.0-alpha.70\lib\net472\Exiled.CreditTags.dll - - ..\packages\EXILED.2.2.4\lib\net472\Exiled.Loader.dll + + ..\packages\EXILED.3.0.0-alpha.70\lib\net472\Exiled.CustomItems.dll - - ..\packages\EXILED.2.2.4\lib\net472\Exiled.Permissions.dll + + ..\packages\EXILED.3.0.0-alpha.70\lib\net472\Exiled.Events.dll - - ..\packages\EXILED.2.2.4\lib\net472\Exiled.Updater.dll + + ..\packages\EXILED.3.0.0-alpha.70\lib\net472\Exiled.Loader.dll - - False - ..\..\..\EXILED_REFERENCES\Mirror.dll + + ..\packages\EXILED.3.0.0-alpha.70\lib\net472\Exiled.Permissions.dll - - False - ..\..\..\EXILED_REFERENCES\scp035.dll + + ..\packages\EXILED.3.0.0-alpha.70\lib\net472\Exiled.Updater.dll + + + ..\..\..\..\SCPSLServer\SCPSL_Data\Managed\Mirror.dll - - False - ..\..\..\EXILED_REFERENCES\UnityEngine.dll + + ..\..\..\..\SCPSLServer\SCPSL_Data\Managed\UnityEngine.dll - - False - ..\..\..\EXILED_REFERENCES\UnityEngine.CoreModule.dll + + ..\..\..\..\SCPSLServer\SCPSL_Data\Managed\UnityEngine.CoreModule.dll False diff --git a/UltimateAFK/bin/Release/Exiled.Updater.xml b/UltimateAFK/bin/Release/Exiled.Updater.xml index 21c3562..e7eab1c 100644 --- a/UltimateAFK/bin/Release/Exiled.Updater.xml +++ b/UltimateAFK/bin/Release/Exiled.Updater.xml @@ -20,9 +20,6 @@ Gets a value that indicates which assemblies should be excluded from the update. - - - diff --git a/UltimateAFK/bin/Release/UnityEngine.ARModule.dll b/UltimateAFK/bin/Release/UnityEngine.ARModule.dll index 87dd0a8..b7b2e9a 100644 Binary files a/UltimateAFK/bin/Release/UnityEngine.ARModule.dll and b/UltimateAFK/bin/Release/UnityEngine.ARModule.dll differ diff --git a/UltimateAFK/packages.config b/UltimateAFK/packages.config index 5b7f9fa..076dada 100644 --- a/UltimateAFK/packages.config +++ b/UltimateAFK/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/packages/EXILED.2.2.4/EXILED.2.2.4.nupkg b/packages/EXILED.2.2.4/EXILED.2.2.4.nupkg deleted file mode 100644 index 40d33c4..0000000 Binary files a/packages/EXILED.2.2.4/EXILED.2.2.4.nupkg and /dev/null differ diff --git a/packages/EXILED.2.2.4/.signature.p7s b/packages/EXILED.3.0.0-alpha.70/.signature.p7s similarity index 72% rename from packages/EXILED.2.2.4/.signature.p7s rename to packages/EXILED.3.0.0-alpha.70/.signature.p7s index 1426aa3..21ec329 100644 Binary files a/packages/EXILED.2.2.4/.signature.p7s and b/packages/EXILED.3.0.0-alpha.70/.signature.p7s differ diff --git a/packages/EXILED.3.0.0-alpha.70/EXILED.3.0.0-alpha.70.nupkg b/packages/EXILED.3.0.0-alpha.70/EXILED.3.0.0-alpha.70.nupkg new file mode 100644 index 0000000..1f7530a Binary files /dev/null and b/packages/EXILED.3.0.0-alpha.70/EXILED.3.0.0-alpha.70.nupkg differ diff --git a/packages/EXILED.2.2.4/images/Exiled_Icon.jpg b/packages/EXILED.3.0.0-alpha.70/images/Exiled_Icon.jpg similarity index 100% rename from packages/EXILED.2.2.4/images/Exiled_Icon.jpg rename to packages/EXILED.3.0.0-alpha.70/images/Exiled_Icon.jpg diff --git a/packages/EXILED.3.0.0-alpha.70/lib/net472/Exiled.API.dll b/packages/EXILED.3.0.0-alpha.70/lib/net472/Exiled.API.dll new file mode 100644 index 0000000..acf0517 Binary files /dev/null and b/packages/EXILED.3.0.0-alpha.70/lib/net472/Exiled.API.dll differ diff --git a/packages/EXILED.2.2.4/lib/net472/Exiled.API.xml b/packages/EXILED.3.0.0-alpha.70/lib/net472/Exiled.API.xml similarity index 59% rename from packages/EXILED.2.2.4/lib/net472/Exiled.API.xml rename to packages/EXILED.3.0.0-alpha.70/lib/net472/Exiled.API.xml index 19d259f..01a96cc 100644 --- a/packages/EXILED.2.2.4/lib/net472/Exiled.API.xml +++ b/packages/EXILED.3.0.0-alpha.70/lib/net472/Exiled.API.xml @@ -9,6 +9,11 @@ Ammo types present in the game. + + + Not ammo. + + 5.56mm Ammunition. @@ -18,13 +23,24 @@ 7.62mm Ammunition. - Used by and . + Used by and . 9mm Ammunition. - Used by , and . + Used by ,. + + + + + 12 gauge shotgun ammo. + Used by + + + + + 44 caliber. @@ -412,6 +428,86 @@ Represents the EXIT camera (above the Class-D and Scientist extraction point). + + + Door beep types. + + + + + Permission denied beep. + + + + + Lock bypass is denied. + + + + + Interaction denied. + + + + + Interaction allowed. + + + + + All possible door locks. + + + + + Unlocked. + + + + + Regular SCP-079 door lock. + + + + + SCP-079 lockdown room lock. + + + + + Alpha Warhead detonation lock. + + + + + Locked via admin command. + + + + + Locked by decontamination lockdown (after decon starts). + + + + + Locked by decontamination evacuation (during final countdown to decon). + + + + + Special door features. + + + + + Door has no power. + + + + + Isloation. + + Unique identifier for the different types of doors. @@ -519,7 +615,7 @@ - RRepresents any entrance zone styled door. + Represents any entrance zone styled door. @@ -617,36 +713,6 @@ Represents the SURFACE_GATE door. - - - Represents the 372 door. - - - - - Represents the Airlocks door. - - - - - Represents the ContDoor door. - - - - - Represents the ESCAPE door. - - - - - Represents the ESCAPE_INNER door. - - - - - Represents the 173 door. - - Status effects as enum. @@ -742,7 +808,7 @@ Makes the player faster but also drains health. - + Makes the player invisibility. @@ -830,7 +896,7 @@ Frag grenade. - Used by . + Used by . @@ -845,6 +911,101 @@ Used by . + + + Possible states. + + + + + Idling and not using energy. + + + + + Powering up and using energy slowly. + + + + + Powering down and not using energy. + + + + + Fully powered up and ready to fire. + + + + + Firing and using energy. + + + + + The types of permissions assigned to keycards. + + + + + No permissions. + + + + + Opens checkpoints. + + + + + Opens Exit Gates. + + + + + Opens the Intercom door. + + + + + Opens the Alpha Warhead detonation room on surface. + + + + + Opens 914. + + + + + , . + + + + + , , . + + + + + , Opens Light Containment armory. + + + + + , , Opens Heavy Containment armories. + + + + + , , Opens MicroHID room. + + + + + . + + The team that is currently leading the round. @@ -949,6 +1110,36 @@ Execute the plugin first, before other ones. + + + All possible ranges. + + + + + The radio is disabled. + + + + + The shortest range with the least battery usage. + + + + + The standard, default range. + + + + + A longer range with increased battery usage. + + + + + The longest range with the most battery usage. + + Layers game respawn effects. @@ -956,12 +1147,12 @@ - Plays the music to alive and . + Plays the music to alive and . - Summons the van. + Summons the van. @@ -1232,14 +1423,14 @@ Mobile Task Forces team. - Contains , , , , - and . + Contains , , , , + and . Chaos Insurgency team. - Contains and . + Contains , , , and . @@ -1292,6 +1483,76 @@ Sniper Scope + + + Possible spawn reasons. + + + + + No reason specified. + + + + + The round has just started. + + + + + The player joined and the round recently started. + + + + + The player was dead and is respawning. + + + + + The player has died. + + + + + The player has escaped. + + + + + The player was revived by 049. + + + + + The player's role was changed by an admin command or plugin. + + + + + The user has entered Overwatch mode. + + + + + Possible throwable throw types. + + + + + Requesting to begin throwing a throwable item. + + + + + Requesting to confirm a weak throw. + + + + + Requesting to confirm a strong throw. + + Facility zone types. @@ -1354,44 +1615,6 @@ Gets all the and values for for the instances using and name. - - - Contains extensions related to . - - - - - Gets the . - - The Door to check. - The . - - - - Breaks the specified door, if it is not already broken. - - The to break. - True if the door was broken, false if it was unable to be broken, or was already broken before. - - - - Indicates when the door can be broken. - - The . - true if the door can be broken; otherwise, false. - - - - Gets a nametag of a door. - - The . - A nametag of the door or null. - - - - Gets all the values for the instances using and name. - - Contains an extension method to get from . @@ -1404,64 +1627,19 @@ The enum. The . - + A set of extensions for . - - - Spawns a in a desired position. - - The type of the item to be spawned. - The durability (or ammo, depends on the weapon) of the item. - Where the item will be spawned. - The rotation. We recommend you to use . - The sight the weapon will have (0 is nothing, 1 is the first sight available in the weapon manager, and so on). - The barrel of the weapon (0 is no custom barrel, 1 is the first barrel available, and so on). - Other attachments like flashlight, laser or ammo counter. - Returns the spawned . - - - - Spawns an in a desired position. - - The item to be spawned. - Where the item will be spawned. - The rotation. We recommend you to use . - Returns the spawned . - - - - Set the ammo of an item. - - The list of items. - The weapon to be changed. - The ammo amount. - - - - Set the ammo value of an . - - The player instance. - The weapon to be changed. - The ammo amount. - - - - Get the ammo of an . - - The weapon to be get. - Returns the weapon left ammo. - - + Check if an item is an ammo. The item to be checked. Returns whether the is an ammo or not. - + Check if an item is a weapon. @@ -1469,102 +1647,68 @@ Indicates whether the MicroHID item should be taken into account or not. Returns whether the is a weapon or not. - - - Check if an item is an SCP-330. - - The item to be checked. - Returns whether the is an SCP or not. - - - - Check if an item is an SCP. - - The item to be checked. - Returns whether the is an SCP or not. - - + Check if an item is an SCP. The item to be checked. Returns whether the is an SCP or not. - + Check if an item is a throwable item. The item to be checked. Returns whether the is a throwable item or not. - + Check if an item is a medical item. The item to be checked. Returns whether the is a medical item or not. - + Check if an item is a utility item. The item to be checked. Returns whether the is an utilty item or not. - + - Check if an item is a keycard. + Check if a is an armor item. The item to be checked. - Returns whether the is a keycard or not. - - - - Gets sight modification of the weapon. - - The player instance. - The weapon with attachment. - Returns . - - - - Sets sight modification of the weapon. - - The player instance. - The weapon with attachment. - Type of the sight. + Returns whether the is an armor or not. - + - Gets barrel modification of the weapon. + Check if an item is a keycard. - The player instance. - The weapon with attachment. - Returns . + The item to be checked. + Returns whether the is a keycard or not. - + - Sets barrel modification of the weapon. + Gets the default ammo of a weapon. - The player instance. - The weapon with attachment. - Type of the barrel. + The item that you want to get durability of. + Returns the item durability. - + - Gets other modification of the weapon. + Converts a valid ammo into an . - The player instance. - The weapon with attachment. - Returns . + The to convert. + The ammo type of the given item type. - + - Sets other modification of the weapon. + Converts an into it's corresponding . - The player instance. - The weapon with attachment. - Type of the other. + The to convert. + The Item type of the specified ammo. @@ -1584,45 +1728,180 @@ Gets all the values for the instances using and name. - + - A set of extensions for . + A set of extensions for Networking. - + - Finds and returns the the ragdoll is located in. + Gets corresponding to . - The to check the room of. - The the ragdoll is located in. - + - Returns the of the ragdoll. + Gets a all DirtyBit from (format:classname.methodname). - The to check the role of. - The of the ragdoll. - + + + Gets a 's . + + + + + Gets a NetworkServer.SendSpawnMessage's . + + + + + Shaking target window. + + Target to shake. + + + + Play beep sound to . + + Target to play. + + + + Set that only can see. + + Only this player can see info. + Target to set info. + Setting info. + + + + Change character model for appearance. + It will continue until 's changes. + + Player to change. + Model type. + + + + Send CASSIE announcement that only can hear. + It will continue until 's changes. + + Target to send. + Announcement words. + Same on 's isHeld. + Same on 's isNoisy. + + + + Changes the 's walking speed. Negative values will invert the player's controls. + + Player to change. + Speed multiplier. + Allow values to be larger than safe amount. + + + + Changes the 's running speed. Negative values will invert the player's controls. + + Player to change. + Speed multiplier. + Allow values to be larger than safe amount. + + + + Send fake values to client's . + + Target to send. + of object that owns . + 's type. + Property name starting with Network. + Value of send to target. + + + + Force resync to client's . + + of object that owns . + 's type. + Property name starting with Network. + + + + Send fake values to client's . + + Target to send. + of object that owns . + 's type. + Property name starting with Rpc. + Values of send to target. + + + + Send fake values to client's . + + Target to send. + of object that owns . + 's type. + Custom writing action. + + EffectOnlySCP207. + + MirrorExtensions.SendCustomSync(player, player.ReferenceHub.networkIdentity, typeof(PlayerEffectsController), (writer) => { + writer.WriteUInt64(1ul); // DirtyObjectsBit + writer.WriteUInt32(1); // DirtyIndexCount + writer.WriteByte((byte)SyncList<byte>.Operation.OP_SET); // Operations + writer.WriteUInt32(17); // EditIndex + writer.WriteByte(1); // Value + }); + + + + + + Edit 's parameter and sync. + + Target object. + Edit function. + + + + A set of extensions for . + + + + + Finds and returns the the ragdoll is located in. + + The to check the room of. + The the ragdoll is located in. + + + + Returns the of the ragdoll. + + The to check the role of. + The of the ragdoll. + + Returns the owner , or null if the ragdoll does not have an owner. - The to get the owner of. + The to get the owner of. The owner of the ragdoll, or null if the ragdoll does not have an owner. - + Returns the killing , or null if the killer is not a player. - The to get the killer of. + The to get the killer of. The killing , or null if the killer is not a player. - + A set of extensions for . - + Invoke a static method. @@ -1630,52 +1909,59 @@ The method name. The method parameters. - + Copy all properties from the source class to the target one. The target object. The source object to copy properties from. - + A set of extensions for . - + Get a role's . The to get the color of. The of the role. - + Get a role's . The to check the side of. . - + Get a team's . The to get the of. .. - + Get the of the given . Role. . - + + + Gets a random spawn point of a . + + The to get the spawn point from. + Returns the spawn point and rotation . + + A set of extensions for . - + Compute the distance between two . @@ -1683,14 +1969,14 @@ The second string to be compared. Returns the distance between the two strings. - + Extract command name and arguments from a . The to extract from. Returns a containing the exctracted command name and arguments. - + Converts a to snake_case convention. @@ -1698,7 +1984,7 @@ Indicates whether special chars has to be replaced or not. Returns the new snake_case string. - + Converts an into a string. @@ -1707,14 +1993,14 @@ Indicates whether the enumerator index should be shown or not. Returns the converted . - + Removes the prefab-generated brackets (#) on names. Name of the . Name without brackets. - + Retrieves a string before a symbol from an input. @@ -1722,27 +2008,61 @@ The symbol. Substring before the symbol. - + Splits camel case string to space-separated words. Ex: SomeCamelCase -> Some Camel Case. Camel case string. Splitted string. - + Removes all space symbols from string. Input string. String without spaces. - + Gets the player's user id without the authentication. The user id. Returns the raw user id. + + + Gets a SHA256 hash of a player's user id without the authentication. + + The user id. + The hashed userid. + + + + Contains a useful extension to compare two 's. + + + + + Compares two 's for equality. + + The fist . + The second . + true if they are equal; otherwise, false. + + + + Searches for a key of a group in the RemoteAdmin config. + + The . + The key of that group, or null if not found. + + + + Searches for a value of a group in the RemoteAdmin config. + + The . + The value of that group, or null if not found. + Represents the in-game badge. @@ -1846,27 +2166,816 @@ Reproduce a non-glitched C.A.S.S.I.E message after a certain amount of seconds. - The message to be reproduced. - The seconds that have to pass before reproducing the message. - Indicates whether C.A.S.S.I.E has to hold the message. - Indicates whether C.A.S.S.I.E has to make noises or not during the message. + The message to be reproduced. + The seconds that have to pass before reproducing the message. + Indicates whether C.A.S.S.I.E has to hold the message. + Indicates whether C.A.S.S.I.E has to make noises or not during the message. + + + + Reproduce a glitchy C.A.S.S.I.E announcement after a certain period of seconds. + + The message to be reproduced. + The seconds that have to pass before reproducing the message. + The chance of placing a glitch between each word. + The chance of jamming each word. + + + + Calculates duration of a C.A.S.S.I.E message. + + The message, which duration will be calculated. + Determines if a number won't be converted to its full pronunciation. + Duration (in seconds) of specified message. + + + + Collision Handler for grenades. + + + + + Gets the thrower of the grenade. + + + + + Gets the grenade itself. + + + + + Inits the object. + + The grenade owner. + The grenade component. + + + + A wrapper class for . + + + + + Initializes a new instance of the class. + + + + + + Gets the base-game for this door. + + + + + Gets the . + + + + + Gets or sets a value indicating whether the door is open. + + + + + Gets or sets a value indicating whether SCP-106 can walk through the door. + + + + + Gets a value indicating whether the door is locked. + + + + + Gets or sets the door lock type. + + + + + Gets a value indicating whether or not this door is breakable. + + + + + Gets the door's Instance ID. + + + + + Gets a nametag of a door. + + + + + Gets or sets the required permissions to open the door. + + + + + Gets or sets the max health of the door, if it is breakable. + + + + + Gets the doors remaining health, if it is breakable. + + + + + Gets or sets the damage types this door ignores, if it is breakable. + + + + + Gets or sets the size scale of the door. + + + + + Gets the door object associated with a specific , or creates a new one if there isn't one. + + + + + + + Breaks the specified door, if it is not already broken. + + True if the door was broken, false if it was unable to be broken, or was already broken before. + + + + Damages the door, if it's breakable. + + The amount of damage to deal. + The damage type to use. + True if the door was damaged. + + + + Tries to pry the door open. + + True if the door was able to be pried open. + + + + Makes the door play a beep sound. + + The beep sound to play. + + + + Gets all the values for the instances using and name. + + + + + A wrapper class for . + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + + + + A wrapper class for . + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + + + + Gets a value indicating whether this item is equippable. + + + + + Gets a value indicating whether this item is holsterable. + + + + + Gets a value indicating whether or not this is a worn item. + + + + + Gets or sets the Weight of the armor. + + + + + Gets or sets a value indicating whether or not excess ammo should be removed when the armor is dropped. + + + + + Gets or sets how strong the helmet on the armor is. + + When trying to set the value below 0 or above 100. + + + + Gets or sets how strong the vest on the armor is. + + When trying to set the value below 0 or above 100. + + + + Gets or sets how much faster stamina will drain when wearing this armor. + + When attempting to set the value below 1 or above 2. + + + + Gets or sets how much the users movement speed should be affected when wearing this armor. (higher values = slower movement). + + When attempting to set the value below 0 or above 1. + + + + Gets or sets how much worse and s are affected by wearing this armor. + + + + + Gets or sets the ammo limit of the wearer when using this armor. + + + + + A wrapper class for . + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + The player parameter will always need to be defined if this grenade is custom using Exiled.CustomItems. + + + + Gets the for this item. + + + + + Gets or sets the maximum radius of the grenade. + + + + + Gets or sets the multiplier for damage against players. + + + + + Gets or sets how long the effect will last. + + + + + Gets or sets how long the effect will last. + + + + + Gets or sets how long the effect will last. + + + + + Gets or sets how long the fuse will last. + + + + + A wrapper class for . + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + + + + Gets or sets the amount of ammo in the firearm. + + + + + Gets the max ammo for this firearm. + + + + + Gets the of the firearm. + + + + + Gets the of the firearm. + + + + + Gets a value indicating whether the firearm is being aimed. + + + + + Gets a value indicating whether the firearm's flashlight module is enabled. + + + + + Gets or sets the s of the firearm. + + + + + Gets or sets the fire rate of the firearm, if it is an automatic weapon. + + When trying to set this value for a weapon that is semi-automatic. + + + + Gets or sets the recoil settings of the firearm, if it's an automatic weapon. + + When trying to set this value for a weapon that is semi-automatic. + + + + A wrapper class for . + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + The player parameter will always need to be defined if this grenade is custom using Exiled.CustomItems. + + + + Gets the for this item. + + + + + Gets or sets the for determining how long the effect will last. + + + + + Gets or sets the multiplier for damage against players. + + + + + Gets or sets the for determining how long the effect will last. + + + + + Gets or sets how long the fuse will last. + + + + + A wrapped class for . + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + + + + Gets or sets a value indicating whether the flashlight is turned on. + + + + + A wrapper class for . + + + + + A dictionary of all 's that have been converted into . + + + + + A dictionary of all s that have been assigned to an item. + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Gets or sets the unique serial number for the item. + + + + + Gets or sets the scale for the item. + + + + + Gets the of the item. + + + + + Gets the of the item. + + + + + Gets the Weight of the item. + + + + + Gets the who owns the item. + + + + + Gets an existing or creates a new instance of one. + + The to convert into an item. + The item wrapper for the given . + + + + Gives this item to a . + + The to give the item to. + + + + Spawns the item on the map. + + The location to spawn the item. + The rotation of the item. + The created by spawning this item. + + + + A wrapper class for . + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + + + + Gets or sets the of the keycard. + + + + + A wrapper class for . + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Gets or sets the remaining energy in the MicroHID. + + + + + Gets the base of the item. + + + + + Gets or sets the . + + + + + Starts firing the MicroHID. + + + + + A wrapper class for . + + + + + A dictionary of all 's that have been converted into . + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Gets the unique serial number for the item. + + + + + Gets or sets the pickup's scale value. + + + + + Gets or sets the weight of the item. + + + + + Gets the of the item. + + + + + Gets the of the item. + + + + + Gets or sets a value indicating whether the pickup is locked (can't be picked up). + + + + + Gets or sets a value indicating whether the pickup is currently in use. + + + + + Gets or sets the pickup position. + + + + + Gets or sets the pickup rotation. + + + + + Gets a value indicating whether this pickup is spawned. + + + + + Gets an existing or creates a new instance of one. + + The to convert into a . + The wrapper for the given . + + + + Destroys the pickup. + + + + + A wrapper class for . + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + + + + Gets or sets the percentage of the radio's battery. + + + + + Gets or sets the current . + + + + + Gets or sets the for the current . + + + + + Turns off the radio. + + + + + A wrapper class for throwable items. + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + The player parameter will always need to be defined if this throwable is custom using Exiled.CustomItems. + + + + Gets the base for this item. + + + + + Gets the for this item. + + + + + Gets or sets the amount of time it takes to pull the pin. + + + + + Throws the item. + + Whether to use full or half force. + + + + A wrapper class for . + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + + + + Gets a value indicating whether this item is equippable. + + + + + Gets a value indicating whether this item is holsterable. + + + + + Gets or sets the Weight of the item. + + + + + Gets a value indicating whether the item is currently being used. + + + + + Gets or sets how long it takes to use the item. + - + - Reproduce a glitchy C.A.S.S.I.E announcement after a certain period of seconds. + Gets or sets how long after using starts a player has to cancel using the item. - The message to be reproduced. - The seconds that have to pass before reproducing the message. - The chance of placing a glitch between each word. - The chance of jamming each word. - + - Calculates duration of a C.A.S.S.I.E message. + Gets or sets the cooldown between repeated uses of this item. - The message, which duration will be calculated. - Determines if a number won't be converted to its full pronunciation. - Duration (in seconds) of specified message. @@ -1921,7 +3030,47 @@ A set of tools to easily handle the in-game map. - + + + A list of s on the map. + + + + + A list of s on the map. + + + + + A list of s on the map. + + + + + A list of s on the map. + + + + + A list of s on the map. + + + + + A list of s on the map. + + + + + A list of s on the map. + + + + + A list of s on the map. + + + Gets a value indicating whether decontamination has begun in the light containment zone. @@ -1938,7 +3087,7 @@ - Gets all objects. + Gets all objects. @@ -1956,150 +3105,68 @@ Gets all objects. - + - Gets the Default , - used in - and . + Gets all objects. - - This value can be modified to change the default Ragdoll's info. - - + - Gets the current state of the intercom. + Gets all objects. - + - Gets a value indicating whether or not the intercom is currently being used. + gets all s on the map. - + - Gets the that is using the intercom. Will be null if is false. + Gets all objects. - + - Tries to find the room that a is inside, first using the 's parents, then using a Raycast if no room was found. + Gets the current state of the intercom. - The inside the room. - The that the is located inside. - + - Spawns a ragdoll for a player on a certain position. + Gets or sets the current seed of the map. - Victim, represented as a player. - The message to be displayed as his death. - Where the ragdoll will be spawned. - The rotation for the ragdoll. - The initial velocity the ragdoll will have, as if it was exploded. - Sets this ragdoll as respawnable by SCP-049. - The Ragdoll component (requires Assembly-CSharp to be referenced). - + - Spawns a ragdoll on the map based on the different arguments. + Gets a value indicating whether or not the intercom is currently being used. - - Tip: You can do ': true, : MyPlayer.Id' to skip parameters. - - - - // Code to spawn a fake ragdoll - if (ev.Player == MyPlugin.TheInmortalPlayer) - { - var fakeRagdoll = Map.SpawnRagdoll(RoleType.ClassD, DamageTypes.Fall, "The Falling Guy", new Vector3(1234f, -1f, 4321f)); - } - - - The to use as ragdoll. - The death cause, expressed as a . - The name from the victim, who the corpse belongs to. - Where the ragdoll will be spawned. - The rotation for the ragdoll. - The initial velocity the ragdoll will have, as if it was exploded. - Sets this ragdoll as respawnable by SCP-049. Must have a valid . - Used for recall. The to be recalled. - Can be ignored. The 's PlayerId field. - The Ragdoll component (requires Assembly-CSharp to be referenced). - + - Spawns a ragdoll on the map based on the different arguments. + Gets the that is using the intercom. Will be null if is false. - - Tip: You can do, for example, ': "Vector3.up * 3"' to skip parameters. - - - - // Code to spawn a fake ragdoll - if (ev.Player == MyPlugin.TheInmortalPlayer) - { - var fakeRagdoll = Map.SpawnRagdoll(ev.Player.Role, ev.Player.Position, victimNick: ev.Player.DisplayNickname, playerId: ev.Player.Id); - } - - - The to use as ragdoll. - The name from the victim, who the corpse belongs to. - The that displays who killed this ragdoll, and using which tool. - Where the ragdoll will be spawned. - The rotation for the ragdoll. - The initial velocity the ragdoll will have, as if it was exploded. - Sets this ragdoll as respawnable by SCP-049. - Used for recall. The to be recalled. - Can be ignored. The 's PlayerId field, likely used in the client. - The Ragdoll component (requires Assembly-CSharp to be referenced). - + - Optimized method to Spawn a ragdoll on the map. - Will only allocate the newly created GameObject, requires extra work and pre-loaded base game roles. + Tries to find the room that a is inside, first using the 's parents, then using a Raycast if no room was found. - - - - - EXILED already has an internal, default Ragdoll.Info: the use of this - method to try to optimize a plugin is absolutely optional. - - We recommend using: Map.SpawnRagdoll(RoleType roleType, string victimNick, Vector3 position) - - - This method should only ever be used if you're dealing with massive - server-sided lag. - - - Ragdoll.Info's "ownerID" isn't the SteamID, but the - 's PlayerId field. - - - - Main game's thad defines the role to spawn a ragdoll. - object containing the ragdoll's info. - Where the ragdoll will be spawned. - The rotation for the ragdoll. - The initial velocity the ragdoll will have, as if it was exploded. - Sets this ragdoll as respawnable by SCP-049. - The component created. + The inside the room. + The that the is located inside. - + - Spawns hands at the specified position with specified rotation. + Broadcasts a message to all players. - Hands position. - Hands rotation. + The to be broadcasted. + Clears all players' broadcasts before sending the new one. - + Broadcasts a message to all players. The duration in seconds. The message that will be broadcast (supports Unity Rich Text formatting). The broadcast type. + Clears all players' broadcasts before sending the new one. @@ -2113,24 +3180,17 @@ Clears all players' broadcasts. - - - Gets a random spawn point of a . - - The to get the spawn point from. - Returns the spawn point . - Starts the light containment zone decontamination process. - + Turns off all lights of the facility. The duration of the blackout. - Indicates whether or not only lights in the heavy containment zone will be turned off. + The s to affect. @@ -2139,11 +3199,11 @@ The camera id to be searched for. The with the given ID. - + Gets the camera with the given camera type. - The to search for. + The to search for. The with the given camera type. @@ -2151,7 +3211,7 @@ Gets the door with the given door name. The door name. - The or null if a door with this name doesn't exist. + The or null if a door with this name doesn't exist. @@ -2205,6 +3265,11 @@ Gets or sets configs path. + + + Gets or sets translations path. + + Gets or sets logs path. @@ -2221,6 +3286,11 @@ Represents the in-game player, by encapsulating a . + + + A list of the player's items. + + Initializes a new instance of the class. @@ -2263,14 +3333,24 @@ Gets the encapsulated . + + + Gets the player's ammo. + + Gets the encapsulated . - + - Gets the player's ammo. + Gets a value indicating whether the player is viewing a hint. + + + + + Gets the encapsulated 's Radio. @@ -2283,21 +3363,11 @@ Gets the player's inventory. - - - Gets the encapsulated 's PlayerCamera. - - Gets the encapsulated 's PlayerCamera. - - - Gets the player's grenade manager. - - Gets or sets the player's id. @@ -2328,7 +3398,7 @@ - Gets a value indicating whether or not the player is verified. + Gets a value indicating whether the player is verified. This is always false if online_mode is set to false. @@ -2351,22 +3421,11 @@ You can hide player info elements with this. - - - Gets or sets the player's player info area bitmask. - You can hide player info elements with this. - - Gets or sets the player's custom player info string. - - - Gets or sets the player's custom player info string. - - Gets the dictionary of player's session variables. It is not being saved on player disconnect. @@ -2374,22 +3433,17 @@ - Gets or sets a value indicating whether or not the player is invisible. + Gets or sets a value indicating whether the player is invisible. - Gets a value indicating whether or not the player can be tracked. + Gets a value indicating whether the player can be tracked. - Gets a value indicating whether or not the player is connected to the server. - - - - - Gets a list of player ids who can't see the player. + Gets a value indicating whether the player is connected to the server. @@ -2399,17 +3453,17 @@ - Gets a value indicating whether or not the player has Remote Admin access. + Gets a value indicating whether the player has Remote Admin access. - Gets or sets a value indicating whether or not the player's overwatch is enabled. + Gets or sets a value indicating whether the player's overwatch is enabled. - + - Gets or sets a value indicating the cuffer id. + Gets or sets a value indicating the cuffer . @@ -2446,27 +3500,52 @@ - Gets a value indicating whether or not the palyer is cuffed. + Gets a value indicating whether the player is cuffed. Note: players can be cuffed without another player being the cuffer. - Gets a value indicating whether or not the player is reloading a weapon. + Gets a value indicating whether the player is reloading a weapon. - + - Gets a value indicating whether or not the player is zooming with a weapon. + Gets a value indicating whether the player is aiming with a weapon. + + + + + Gets a value indicating whether the player has enabled weapon's flashlight module. - Gets the player's current . + Gets or sets the player's current . + + + + + Gets the player's current animation. + + + + + Gets a value indicating whether the player is sprinting. + + + + + Gets a value indicating whether the player is walking. + + + + + Gets a value indicating whether the player is sneaking. - Gets a value indicating whether or not the player is jumping. + Gets a value indicating whether the player is jumping. @@ -2476,15 +3555,10 @@ - Gets or sets a value indicating whether or not the has No-clip enabled. + Gets or sets a value indicating whether the has No-clip enabled. indicating status. - - - Gets the player's command sender instance. - - Gets the player's command sender instance. @@ -2495,35 +3569,40 @@ Gets player's . + + + Gets the player's . + + - Gets a value indicating whether or not the player is the host. + Gets a value indicating whether the player is the host. - Gets a value indicating whether or not the player is alive. + Gets a value indicating whether the player is alive. - Gets a value indicating whether or not the player is dead. + Gets a value indicating whether the player is dead. - Gets a value indicating whether or not the player's is any NTF rank. + Gets a value indicating whether the player's is any NTF rank. Equivalent to checking the player's . - Gets a value indicating whether or not the player's is any SCP rank. + Gets a value indicating whether the player's is any SCP rank. - Gets a value indicating whether or not the player's is any human rank (except the tutorial role). + Gets a value indicating whether the player's is any human rank (except the tutorial role). @@ -2539,7 +3618,7 @@ - Gets or sets a value indicating whether the player friendly fire is enabled or not. + Gets or sets a value indicating whether the player friendly fire is enabled. This only isAllowed to deal friendly fire damage, not take friendly fire damage. @@ -2550,22 +3629,37 @@ - Gets or sets a value indicating whether the player's bypass mode is enabled or not. + Gets or sets a value indicating whether the player's bypass mode is enabled. - Gets or sets a value indicating whether or not the player is muted. + Gets or sets a value indicating whether the player is muted. - Gets or sets a value indicating whether or not the player is intercom muted. + Gets or sets a value indicating whether the player is intercom muted. + + + + + Gets a value indicating whether the player is voice chatting. + + + + + Gets a value indicating whether the player is transmitting. - Gets or sets a value indicating whether or not the player has godmode enabled. + Gets or sets a value indicating whether the player has godmode enabled. + + + + + Gets or sets the player's unit name. @@ -2579,15 +3673,20 @@ Gets or sets the player's maximum health. - + + + Gets or sets the player's artificial health. + If the health is greater than the , it will also be changed to match the artificial health. + + + - Gets or sets the player's adrenaline health. - If the health is greater than the , the MaxAdrenalineHealth will also be changed to match the adrenaline health. + Gets or sets the player's artificial health decay. - + - Gets or sets the player's maximum adrenaline health. + Gets or sets the player's maximum artificial health. @@ -2600,11 +3699,6 @@ Gets or sets the item in the player's hand, returns the default value if empty. - - - Gets the index of the current item in hand. - - Gets or sets the abilities of SCP-079. Can be null. @@ -2660,7 +3754,7 @@ - Gets a value indicating whether the staff bypass is enabled or not. + Gets a value indicating whether the staff bypass is enabled. @@ -2673,6 +3767,11 @@ Gets the current room the player is in. + + + Gets the current zone the player is in. + + Gets or sets the player's group. @@ -2695,12 +3794,12 @@ - Gets or sets a value indicating whether or not the player's badge is hidden. + Gets or sets a value indicating whether the player's badge is hidden. - Gets a value indicating whether or not the player is in the pocket dimension. + Gets a value indicating whether the player is in the pocket dimension. @@ -2708,14 +3807,20 @@ Gets or sets a value indicating whether player should use stamina system. - + - Gets or sets a player's SCP-330 usages counter. + Gets player's ping. + Return player ping. - + - Gets a value indicating whether player has hands. + Gets the player's items. + + + + + Gets or sets a value indicating whether the player can send inputs. @@ -2723,6 +3828,13 @@ Gets a dictionary for storing player objects of connected but not yet verified players. + + + Gets a filtered by side. + + The players' side. + Returns the filtered . + Gets a filtered by team. @@ -2751,6 +3863,13 @@ The player's . Returns a player or null if not found. + + + Gets the Player belonging to a specific NetID, if any. + + The player's . + The player owning the netId, or null if not found. + Gets the Player belonging to the GameObject, if any. @@ -2772,9 +3891,6 @@ The player's nickname, steamID64 or Discord ID. Returns the player found or null if not found. - - - Sets the camera the player is currently located at. @@ -2789,6 +3905,20 @@ The object to switch to. + + + Forces the player to reload their current weapon. + + If the item is not a firearm. + + + + Tries to get an item from a player's inventory. + + The unique identifier of the item. + The found. Null if it doesn't exist. + True if the item is found. + Sets the player's rank. @@ -2802,21 +3932,22 @@ The cuffer player. - + Sets the player's . The new to be set. - Indicates whether it should preserve the position and inventory after changing the role or not. - Indicates whether the player is escaped or not. + The defining why the player's role was changed. + Indicates whether it should preserve the position and inventory after changing the role. - + Broadcasts the given to the player. The to be broadcasted. + Clears all player's broadcasts before sending the new one. - + Drops an item from the player's inventory. @@ -2824,21 +3955,31 @@ - Indicates whether or not the player has an item. + Indicates whether the player has an item. - The item to search for. + The item to search for. true, if the player has it; otherwise, false. - + + + Counts how many items of a certain a player has. + + The item to search for. + How many items of that the player has. + + - Removes an item from the player's inventory. + Removes an from the player's inventory. - The item to be removed. + The to remove. + Whether or not to destroy the item. + A value indicating whether the was removed. - + - Removes the held item from the player's inventory. + Removes the held from the player's inventory. + Returns a value indicating whether the was removed. @@ -2861,7 +4002,12 @@ The disconnection reason. - + + + Resets the player's stamina. + + + Hurts the player. @@ -2869,6 +4015,7 @@ The damage type. The attacker name. The attacker player id. + Indicates whether the attacker name that will be shown by looking at the ragdoll is custom. @@ -2878,6 +4025,13 @@ The attacker. The damage type. + + + Heals the player. + + The amount of health to heal. + Whether healing should exceed their max health. + Kills the player. @@ -2910,16 +4064,17 @@ Sends a message to the player's Remote Admin console. The message to be sent. - Indicates whether the message should be highlighted as success or not. + Indicates whether the message should be highlighted as success. The plugin name. - + A simple broadcast to a . Doesn't get logged to the console and can be monospaced. The broadcast duration. The message to be broadcasted. The broadcast type. + Clears all player's broadcasts before sending the new one. @@ -2931,12 +4086,54 @@ Add an item of the specified type with default durability(ammo/charge) and no mods to the player's inventory. The item to be added. + The given to the player. + + + + Add the amount of items of the specified type with default durability(ammo/charge) and no mods to the player's inventory. + + The item to be added. + The amount of items to be added. + + + + Add the list of items of the specified type with default durability(ammo/charge) and no mods to the player's inventory. + + The list of items to be added. + + + + Add an item to the player's inventory. + + The item to be added. + + + + Adds an item to the player's inventory. + + The of the item to be added. + The that was added. - + Add an item to the player's inventory. + The item to be added. + The object of the item. + The item that was added. + + + + Add the amount of items to the player's inventory. + The item to be added. + The amount of items to be added. + + + + Add the list of items to the player's inventory. + + The list of items to be added. @@ -2944,35 +4141,37 @@ The new items that have to be added to the inventory. - + Resets the player's inventory to the provided list of items, clearing any items it already possess. The new items that have to be added to the inventory. - + Clears the player's inventory, including all ammo and items. + Whether ot not to fully destroy the old items. Drops all items in the player's inventory, including all ammo and items. - + - Sets the amount of a specified ammo type. + Causes the player to throw a grenade. - The to be set. - The amount of ammo to be set. + The to be thrown. + Whether to throw with full or half force. + The item that was spawned. - + - Gets the amount of a specified . + Throw an item. - The to get the amount from. - Returns the amount of the chosen . + The to be thrown. + Whether to throw with full or half force. @@ -2981,12 +4180,26 @@ The message to be shown. The duration the text will be on screen. + + + Shows a HitMarker. + + + + + Safely gets an from , then casts it to . + + The returned object type. + The key of the object to get. + When this method returns, contains the value associated with the specified key, if the key is found; otherwise, the default value for the type of the value parameter is used. + if the SessionVariables contains an element with the specified key; otherwise, . + - Gets a describing whether or not the given status effect is currently enabled. + Gets a describing whether the given status effect is currently enabled. The to check. - A determining whether or not the player effect is active. + A determining whether the player effect is active. @@ -3013,6 +4226,14 @@ The amount of time the effect will be active for. If the effect is already active, setting to true will add this duration onto the effect. + + + Enables a status effect on the player. + + The name of the to enable. + The amount of time the effect will be active for. + If the effect is already active, setting to true will add this duration onto the effect. + Enables a status effect on the player. @@ -3020,7 +4241,7 @@ The name of the to enable. The amount of time the effect will be active for. If the effect is already active, setting to true will add this duration onto the effect. - A bool indicating whether or not the effect was valid and successfully enabled. + A bool indicating whether the effect was valid and successfully enabled. @@ -3043,7 +4264,7 @@ The . The . - A bool indicating whether or not the was successfully gotten. + A bool indicating whether the was successfully gotten. @@ -3060,6 +4281,14 @@ The to change the intensity of. The intensity of the effect. + + + Changes the intensity of a . + + The to change. + The new intensity to use. + The new duration to add to the effect. + Changes the intensity of a status effect. @@ -3068,11 +4297,6 @@ The intensity of the effect. The new length of the effect. Defaults to infinite length. - - - Removes the player's hands. - - @@ -3114,6 +4338,9 @@ + + + @@ -3132,6 +4359,228 @@ + + + Expose how a plugin has to be made. + + The config type. + The translation type. + + + + Initializes a new instance of the class. + + + + + Gets the plugin translations. + + + + + A set of tools to handle the ragdolls more easily. + + + + + Initializes a new instance of the class. + + The to use as ragdoll. + object containing the ragdoll's info. + Where the ragdoll will be spawned. + The rotation for the ragdoll. + The initial velocity the ragdoll will have, as if it was exploded. + Sets this ragdoll as respawnable by SCP-049. + + + + Initializes a new instance of the class. + + The encapsulated . + + + + Gets the Default , + used in . + + + This value can be modified to change the default Ragdoll's info. + + + + + Gets the . + + + + + Gets the ragdoll's name. + + + + + Gets the ragdoll's GameObject. + + + + + Gets the owner . Can be null if the ragdoll does not have an owner. + + + + + Gets the killing . Can be null if the killer is not a player. + + + + + Gets the of the ragdoll. + + + + + Gets or sets a value indicating whether or not the ragdoll is respawnable by SCP-049 . + + + + + Gets the the ragdoll is located in. + + + + + Gets or sets the ragdoll's position. + + + + + Gets or sets the ragdoll's scale. + + + + + Spawns a ragdoll for a player on a certain position. + + Victim, represented as a player. + The message to be displayed as his death. + Where the ragdoll will be spawned. + The rotation for the ragdoll. + The initial velocity the ragdoll will have, as if it was exploded. + Sets this ragdoll as respawnable by SCP-049. + The spawned Ragdoll. + + + + Spawns a ragdoll on the map based on the different arguments. + + + Tip: You can do, for example, ': "Vector3.up * 3"' to skip parameters. + + + + // Code to spawn a fake ragdoll + if (ev.Player == MyPlugin.TheInmortalPlayer) + { + var fakeRagdoll = Ragdoll.Spawn(ev.Player.Role, ev.Player.Position, victimNick: ev.Player.DisplayNickname, playerId: ev.Player.Id); + } + + + The to use as ragdoll. + object containing the ragdoll's info. + Where the ragdoll will be spawned. + The rotation for the ragdoll. + The initial velocity the ragdoll will have, as if it was exploded. + Sets this ragdoll as respawnable by SCP-049. + The spawned Ragdoll. + + + + Spawns a ragdoll on the map based on the different arguments. + + + Tip: You can do, for example, ': "Vector3.up * 3"' to skip parameters. + + + + // Code to spawn a fake ragdoll + if (ev.Player == MyPlugin.TheInmortalPlayer) + { + var fakeRagdoll = Ragdoll.Spawn(ev.Player.Role, ev.Player.Position, victimNick: ev.Player.DisplayNickname, playerId: ev.Player.Id); + } + + + The to use as ragdoll. + object containing the ragdoll's info. + Where the ragdoll will be spawned. + The rotation for the ragdoll. + The initial velocity the ragdoll will have, as if it was exploded. + Sets this ragdoll as respawnable by SCP-049. + The spawned Ragdoll. + + + + Spawns a ragdoll on the map based on the different arguments. + + + Tip: You can do, for example, ': "Vector3.up * 3"' to skip parameters. + + + + // Code to spawn a fake ragdoll + if (ev.Player == MyPlugin.TheInmortalPlayer) + { + var fakeRagdoll = Ragdoll.Spawn(ev.Player.Role, ev.Player.Position, victimNick: ev.Player.DisplayNickname, playerId: ev.Player.Id); + } + + + The to use as ragdoll. + The name from the victim, who the corpse belongs to. + The that displays who killed this ragdoll, and using which tool. + Where the ragdoll will be spawned. + The rotation for the ragdoll. + The initial velocity the ragdoll will have, as if it was exploded. + Sets this ragdoll as respawnable by SCP-049. + Used for recall. The to be recalled. + Can be ignored. The 's PlayerId field, likely used in the client. + The spawned Ragdoll. + + + + Spawns a ragdoll on the map based on the different arguments. + + + Tip: You can do ': true, : MyPlayer.Id' to skip parameters. + + + + // Code to spawn a fake ragdoll + if (ev.Player == MyPlugin.TheInmortalPlayer) + { + var fakeRagdoll = Ragdoll.Spawn(RoleType.ClassD, DamageTypes.Fall, "The Falling Guy", new Vector3(1234f, -1f, 4321f)); + } + + + The to use as ragdoll. + The death cause, expressed as a . + The name from the victim, who the corpse belongs to. + Where the ragdoll will be spawned. + The rotation for the ragdoll. + The initial velocity the ragdoll will have, as if it was exploded. + Sets this ragdoll as respawnable by SCP-049. Must have a valid . + Used for recall. The to be recalled. + Can be ignored. The 's PlayerId field. + The spawned Ragdoll. + + + + Deletes the ragdoll. + + + + + Spawns the ragdoll. + + A set of tools to handle team respawns more easily. @@ -3198,7 +4647,7 @@ - Summons the van. + Summons the van. Whether or not to play the Chaos Insurgency spawn music. @@ -3255,7 +4704,17 @@ - Gets a of in the . + Gets a of in the . + + + + + Gets or sets the intensity of the lights in the room. + + + + + Gets a of in the . @@ -3269,12 +4728,6 @@ Duration in seconds. - - - Sets the intensity of the lights in the room. - - The light intensity multiplier. Cannot be brighter than 2 or darker than 0. - Factory method to create and add a component to a Transform. @@ -3313,9 +4766,34 @@ Gets or sets a value indicating whether the lobby is locked or not. - + + + Gets the number of players who have escaped as . + + + + + Gets the number of players who have escaped as . + + + + + Gets the number of kills. + + + + + Gets the number of kills made by SCPs. + + + + + Gets the number of kills made by frag grenades. + + + - Restarts the round. + Gets the number of players who have been turned into zombies. @@ -3386,14 +4864,14 @@ A set of tools to modify SCP-914's behaviour. - + - Gets or sets SCP-914 . + Gets the cached . - + - Gets or sets SCP-914 recipes. + Gets or sets SCP-914 . @@ -3452,6 +4930,11 @@ Gets or sets the name of the server. + + + Gets the RemoteAdmin permissions handler. + + Gets the Ip address of the server. @@ -3467,6 +4950,16 @@ Gets or sets a value indicating whether friendly fire is enabled or not. + + + Gets the number of players currently on the server. + + + + + Gets or sets the maximum number of players able to be on the server. + + Restarts the server, reconnects all players. @@ -3493,6 +4986,13 @@ true, if redirection was successful; otherwise, false. If the returned value is false, the server won't shutdown. + + + Runs a server command. + + The command to be run. + The running the command. + A set of tools to easily work with the alpha warhead. @@ -3543,11 +5043,6 @@ Gets the warhead real detonation timer. - - - Gets or sets a value indicating whether the warhead can be disabled or not. - - Gets or sets a value indicating whether the warhead can be disabled or not. @@ -3640,6 +5135,11 @@ Gets the plugin config. + + + Gets the internally used translations. Plugins should implement and use . + + Fired after enabling the plugin. @@ -3665,5 +5165,52 @@ Fired before unregistering configs. + + + Defines the contract for basic translation features. + + + + + The limit of a certain when wearing a piece of armor. + + + + + The being limited. + + + + + The amount to limit to. + + + + + Initializes a new instance of the struct. + + + + + + + Settings for specific radio ranges. + + + + + The amount of battery usage per minute while idle. + + + + + The amount of battery usage per minute while talking. + + + + + The maximum range in which this radio will pickup and send voice messages. + + diff --git a/packages/EXILED.3.0.0-alpha.70/lib/net472/Exiled.Bootstrap.dll b/packages/EXILED.3.0.0-alpha.70/lib/net472/Exiled.Bootstrap.dll new file mode 100644 index 0000000..bd9e3bc Binary files /dev/null and b/packages/EXILED.3.0.0-alpha.70/lib/net472/Exiled.Bootstrap.dll differ diff --git a/packages/EXILED.2.2.4/lib/net472/Exiled.Bootstrap.xml b/packages/EXILED.3.0.0-alpha.70/lib/net472/Exiled.Bootstrap.xml similarity index 100% rename from packages/EXILED.2.2.4/lib/net472/Exiled.Bootstrap.xml rename to packages/EXILED.3.0.0-alpha.70/lib/net472/Exiled.Bootstrap.xml diff --git a/packages/EXILED.3.0.0-alpha.70/lib/net472/Exiled.CreditTags.dll b/packages/EXILED.3.0.0-alpha.70/lib/net472/Exiled.CreditTags.dll new file mode 100644 index 0000000..31c203c Binary files /dev/null and b/packages/EXILED.3.0.0-alpha.70/lib/net472/Exiled.CreditTags.dll differ diff --git a/packages/EXILED.3.0.0-alpha.70/lib/net472/Exiled.CreditTags.xml b/packages/EXILED.3.0.0-alpha.70/lib/net472/Exiled.CreditTags.xml new file mode 100644 index 0000000..adb41bf --- /dev/null +++ b/packages/EXILED.3.0.0-alpha.70/lib/net472/Exiled.CreditTags.xml @@ -0,0 +1,144 @@ + + + + Exiled.CreditTags + + + + + A client command to show your credit tag. + + + + + + + + + + + + + + + + + + + + + + + Handles credits for Exiled Devs, Contributors and Plugin devs. + + + + + Gets a static reference to this class. + + + + + + + + Gets a of Exiled Credit ranks. + + + + + Gets a of recently cached userIds and their ranks. + + + + + + + + + + + Uses badge. + + + + + Uses Custom Player Info area + + + + + Uses Badge if available, otherwise uses CustomPlayerInfo if available. + + + + + Includes both of them. + + + + + Represents all existing ranks. + + + + + Nothing. + + + + + Exiled Developer. + + + + + Exiled Contributor. + + + + + Exiled Plugin Developer. + + + + + Event Handlers for the plugin of Exiled. + + + + + Handles checking if a player should have a credit tag or not upon joining. + + + + + + An object representing Exiled Credit ranks. + + + + + Initializes a new instance of the class. + + The name of the rank. + The name of the rank's color. + The hex color value of the rank's color. + + + + Gets a value representing the ranks name. + + + + + Gets a value representing the ranks color. + + + + + Gets a value representing the rank's color as a hex value. + + + + diff --git a/packages/EXILED.3.0.0-alpha.70/lib/net472/Exiled.CustomItems.dll b/packages/EXILED.3.0.0-alpha.70/lib/net472/Exiled.CustomItems.dll new file mode 100644 index 0000000..c3df6c0 Binary files /dev/null and b/packages/EXILED.3.0.0-alpha.70/lib/net472/Exiled.CustomItems.dll differ diff --git a/packages/EXILED.3.0.0-alpha.70/lib/net472/Exiled.CustomItems.xml b/packages/EXILED.3.0.0-alpha.70/lib/net472/Exiled.CustomItems.xml new file mode 100644 index 0000000..4b01643 --- /dev/null +++ b/packages/EXILED.3.0.0-alpha.70/lib/net472/Exiled.CustomItems.xml @@ -0,0 +1,1138 @@ + + + + Exiled.CustomItems + + + + + All of the valid spawn locations. + + + + + The inside of 012's hallway door. + + + + + The inside of the locked door leaving to SCP-012's room. + + + + + The inside of the locked 012 armory door. + + + + + The inside of SCP-049's Armory room. + + + + + The inside of the inner SCP-079 door. + + + + + The inside of SCP-096's locked room behind his spawn. + + + + + The inside of the armory next to SCP-173's spawn. + + + + + The inside of the door at the bottom of SCP-173's stairs. + + + + + On the side closest to SCP-173's spawn, on the top of the stairs. + + + + + Inside the first Escape door. + + + + + Inside the second Escape door. + + + + + Just inside the Intercom door. + + + + + Inside the LCZ Armory. + + + + + Inside the LCZ office room with computers. + + + + + Inside the Nuke armory. + + + + + Inside the surface nuke room. + + + + + Inside the first SCP-079 gate. + + + + + Inside SCP-079's gate. + + + + + Just inside of SCP-914. + + + + + Inside the Gate-A room. + + + + + Inside the Gate-B room. + + + + + Inside the GR-18 door. + + + + + Inside the T-Junction HCZ Armory. + + + + + Inside the Micro-HID room. + + + + + Just inside the left door next to Micro-HID room. + + + + + Just inside the right door next to Micro-HID room. + + + + + Just inside the LCZ WC door. + + + + + Just inside the door at the bottom of the server's room. + + + + + Inside a random locker on the map. + + + + + Contains all informations of a before a changes roles. + + + + + Initializes a new instance of the class. + + + The instance. + + + + Initializes a new instance of the class. + + + + + + + + + + Gets the as a in the player's inventory. + + + + + Contains all information of a before a dies. + + + + + Initializes a new instance of the class. + + + The instance. + + + + Initializes a new instance of the class. + + + + + + + + + + Gets the item in the player's inventory. + + + + + Contains all information of a before a escapes. + + + + + Initializes a new instance of the class. + + + The instance. + + + + Initializes a new instance of the class. + + + + + + + Gets the item in the player's inventory. + + + + + Contains all information of a before handcuffing a . + + + + + Initializes a new instance of the class. + + + The instance. + + + + Initializes a new instance of the class. + + + + + + + + + Gets the item in the player's inventory. + + + + + Contains all information of a before a gets upgraded. + + + + + Initializes a new instance of the class. + + + + + + + + + Gets the upgrading as a. + + + + + Contains all information of a before a 's inventory item is upgraded. + + + + + Initializes a new instance of the class. + + + + + + + + + Gets the upgrading as a. + + + + + A collection of API methods. + + + + + The names of spawn locations who's positions are on the opposite side of their door, and must be corrected. + + + + + Tries to get the of the door used for a specific . + + The to check. + The used for that spawn location. Can be null. + + + + Tries to get the used for a specific . + + The to check. + The used for that spawn location. Can be . + + + + Registers an of s. + + s to be registered. + + + + Unregisters an of s. + + s to be unregistered. + + + + The names of the doors attached to each spawn location. + + The . + Returns the door name. + + + + + + + Gets or sets the to use for this item. + + + + + Gets or sets a value indicating whether gets or sets a value that determines if the grenade should explode immediately when contacting any surface. + + + + + Gets or sets a value indicating how long the grenade's fuse time should be. + + + + + Gets a value indicating what thrown grenades are currently being tracked. + + + + + Spawns a live grenade object on the map. + + The to spawn the grenade at. + The amount of force to throw with. + The fuse time of the grenade. + The of the grenade to spawn. + The to count as the thrower of the grenade. + The being spawned. + + + + + + + + + + Handles tracking thrown custom grenades. + + . + + + + Handles tracking exploded custom grenades. + + . + + + + Handles the tracking of custom grenade pickups that are changed into live grenades by a frag grenade explosion. + + . + + + + + + + Checks to see if the grenade is a tracked custom grenade. + + The of the grenade to check. + True if it is a custom grenade. + + + + The Custom Item base class. + + + + + Gets the list of current Item Managers. + + + + + Gets or sets the custom ItemID of the item. + + + + + Gets or sets the name of the item. + + + + + Gets or sets the description of the item. + + + + + Gets or sets the weight of the item. + + + + + Gets or sets the list of spawn locations and chances for each one. + + + + + Gets or sets the ItemType to use for this item. + + + + + Gets the list of custom items inside players' inventory being tracked as the current item. + + + + + Gets a value indicating whether whether or not this item causes things to happen that may be considered hacks, and thus be shown to global moderators as being present in a player's inventory when they gban them. + + + + + Gets a with a specific ID. + + The ID. + The matching the search, null if not registered. + + + + Gets a with a specific name. + + The name. + The matching the search, null if not registered. + + + + Tries to get a with a specific ID. + + The ID to look for. + The found , null if not registered. + Returns a value indicating whether the was found or not. + + + + Tries to get a with a specific name. + + The name to look for. + The found , null if not registered. + Returns a value indicating whether the was found or not. + + + + Tries to get the player's current in their hand. + + The to check. + The in their hand. + Returns a value indicating whether the has a in their hand or not. + + + + Tries to get the player's of . + + The to check. + The player's of . + Returns a value indicating whether the has a in their hand or not. + + + + Checks to see if this item is a custom item. + + The to check. + The this item is. + True if the item is a custom item. + + + + Checks if this pickup is a custom item. + + The to check. + The this pickup is. + True if the pickup is a custom item. + + + + Tries to spawn a specific at a specific position. + + The ID of the to spawn. + The location to spawn the item. + The instance of the . + Returns a value indicating whether the was spawned or not. + + + + Tries to spawn a specific at a specific position. + + The name of the to spawn. + The location to spawn the item. + The instance of the . + Returns a value indicating whether the was spawned or not. + + + + Gives to a specific a specic . + + The to give the item to. + The name of the to give. + Indicates a value whether will be called when the player receives the or not. + Returns a value indicating if the player was given the or not. + + + + Gives to a specific a specic . + + The to give the item to. + The IDs of the to give. + Indicates a value whether will be called when the player receives the or not. + Returns a value indicating if the player was given the or not. + + + + Registers a . + + Returns a value indicating whether the was registered or not. + + + + Tries to unregister a . + + Returns a value indicating whether the was unregistered or not. + + + + Spawns the in a specific location. + + The x coordinate. + The y coordinate. + The z coordinate. + The wrapper of the spawned . + + + + Spawns a as a in a specific location. + + The x coordinate. + The y coordinate. + The z coordinate. + The to be spawned as a . + The wrapper of the spawned . + + + + Spawns the where a specific is. + + The position where the will be spawned. + The wrapper of the spawned . + + + + Spawns a as a where a specific is. + + The position where the will be spawned. + The to be spawned as a . + The wrapper of the spawned . + + + + Spawns the in a specific position. + + The where the will be spawned. + The wrapper of the spawned . + + + + Spawns a as a in a specific position. + + The where the will be spawned. + The to be spawned as a . + The wrapper of the spawned . + + + + Spawns s inside . + + The spawn points . + The spawn limit. + Returns the number of spawned items. + + + + Spawns all items at their dynamic and static positions. + + + + + Gives an as a to a . + + The who will receive the item. + The to be given. + Indicates whether or not will be called when the player receives the item. + + + + Gives a as a to a . + + The who will receive the item. + The to be given. + Indicates whether or not will be called when the player receives the item. + + + + Gives the to a player. + + The who will receive the item. + Indicates whether or not will be called when the player receives the item. + + + + Called when the item is registered. + + + + + Called when the item is unregistered. + + + + + Checks the specified pickup to see if it is a custom item. + + The to check. + True if it is a custom item. + + + + Checks the specified inventory item to see if it is a custom item. + + The to check. + True if it is a custom item. + + + + + + + Called after the manager is initialized, to allow loading of special event handlers. + + + + + Called when the manager is being destroyed, to allow unloading of special event handlers. + + + + + Handles tracking items when they a player changes their role. + + . + + + + Handles making sure custom items are not "lost" when a player dies. + + . + + + + Handles making sure custom items are not "lost" when a player escapes. + + . + + + + Handles making sure custom items are not "lost" when being handcuffed. + + . + + + + Handles tracking items when they are dropped by a player. + + . + + + + Handles tracking items when they are picked up by a player. + + . + + + + Handles tracking items when they are selected in the player's inventory. + + . + + + + Handles making sure custom items are not affected by SCP-914. + + . + + + + + + + Clears the lists of item uniqIDs and Pickups since any still in the list will be invalid. + + + + + Shows a message to the player when he pickups a custom item. + + The who will be shown the message. + + + + Shows a message to the player when he selects a custom item. + + The who will be shown the message. + + + + + + + Gets or sets the weapon modifiers. + + + + + + + + Gets or sets the weapon damage. + + + + + Gets or sets a value indicating how big of a clip the weapon will have. + + + + + + + + + + + + + + + + + + + + Handles reloading for custom weapons. + + . + + + + Handles shooting for custom weapons. + + . + + + + Handles shot for custom weapons. + + . + + + + Handles hurting for custom weapons. + + . + + + + Weapon modifiers. + + + + + Initializes a new instance of the struct. + + + + + + + + Gets a value indicating what the weapon will have. + + + + + Gets a value indicating what the weapon will have. + + + + + Gets a value indicating what the weapon will have. + + + + + Handles dynamic spawn locations. + + + + + Gets or sets the for this item. + + + + + + + + + + + + + + Defines item spawn properties. + + + + + Gets or sets this spawn point name. + + + + + Gets or sets the spawn chance. + + + + + Gets or sets this spawn point position. + + + + + Handles special properties of spawning an item. + + + + + Gets or sets a value indicating how many of the item can be spawned when the round starts. + + + + + Gets or sets a of possible dynamic spawn points. + + + + + Gets or sets a of possible static spawn points. + + + + + Handles static spawn locations. + + + + + + + + + + + + + + The command to give a player an item. + + + + + Gets the instance. + + + + + + + + + + + + + + + + + Checks if the player is eligible to receive custom items. + + + + + The command to view info about a specific item. + + + + + Gets the instance. + + + + + + + + + + + + + + + + + The command to list all installed items. + + + + + Gets the instance. + + + + + + + + + + + + + + + + + + + + + + + Gets the command instance. + + + + + + + + + + + + + + + + + + + + Gets the command instance. + + + + + + + + + + + + + + + + + The main command. + + + + + Initializes a new instance of the class. + + + + + + + + + + + + + + + + + + + + The command to spawn a specific item. + + + + + Gets the instance. + + + + + + + + + + + + + + + + + The plugin's config class. + + + + + + + + Gets the hint that is shown when someone pickups a . + + + + + Gets the hint that is shown when someone pickups a . + + + + + Gets a value indicating whether if debug mode is enabled. + + + + + Handles all CustomItem API. + + + + + Gets the static reference to this class. + + + + + + + + + + + Handles Player events for the CustomItem API. + + + + + + + + Event Handlers for the CustomItem API. + + + + + + + diff --git a/packages/EXILED.3.0.0-alpha.70/lib/net472/Exiled.Events.dll b/packages/EXILED.3.0.0-alpha.70/lib/net472/Exiled.Events.dll new file mode 100644 index 0000000..d8c074e Binary files /dev/null and b/packages/EXILED.3.0.0-alpha.70/lib/net472/Exiled.Events.dll differ diff --git a/packages/EXILED.2.2.4/lib/net472/Exiled.Events.xml b/packages/EXILED.3.0.0-alpha.70/lib/net472/Exiled.Events.xml similarity index 77% rename from packages/EXILED.2.2.4/lib/net472/Exiled.Events.xml rename to packages/EXILED.3.0.0-alpha.70/lib/net472/Exiled.Events.xml index a43d449..580697e 100644 --- a/packages/EXILED.2.2.4/lib/net472/Exiled.Events.xml +++ b/packages/EXILED.3.0.0-alpha.70/lib/net472/Exiled.Events.xml @@ -139,6 +139,28 @@ + + + The reload configs command. + + + + + Gets static instance of the command. + + + + + + + + + + + + + + The command to show all plugins. @@ -217,6 +239,11 @@ Gets or sets a value indicating whether configs has to be reloaded every time a round restarts. + + + Gets or sets a value indicating whether translations has to be reloaded every time a round restarts. + + Gets a value indicating whether bans should be logged or not. @@ -227,6 +254,11 @@ Gets or sets a value indicating the max shield amount for Scp096. + + + Gets or sets a value indicating whether to log RA commands. + + Contains all informations before a player activates SCP-914. @@ -249,60 +281,54 @@ Gets or sets a value indicating whether or not SCP-914 can be activated. - - - Contains all informations before a player activates the warhead panel. - - - + - Initializes a new instance of the class. + Contains all information before a player inserts a tablet into a generator. - - - - + - Gets the player who's trying to activate the warhead panel. + Initializes a new instance of the class. + + + - + - Gets a list of permissions, required to activate the warhead panel. + Gets the player who's inserting a tablet into the generator. - + - Gets or sets a value indicating whether or not the warhead can be activated. + Gets the instance. - + - Contains all informations before a player activates a workstation. + Gets or sets a value indicating whether or not the tablet can be inserted. - + - Initializes a new instance of the class. + Contains all informations before a player activates the warhead panel. - - - - + - Gets the player who's trying to activate the workstation. + Initializes a new instance of the class. + + - + - Gets a workstation. + Gets the player who's trying to activate the warhead panel. - + - Gets or sets a value indicating whether or not the workstation can be activated. + Gets or sets a value indicating whether or not the warhead can be activated. @@ -310,14 +336,14 @@ Contains all informations before adding a target to SCP-096. - + Initializes a new instance of the class. - who is SCP-096. - who is the target to be added. - amount of temporary health to add to . - amount of time to add to 's enrage timer. Note: This does not affect anything if he doesn't already have any targets before this event is called. + + + + @@ -329,19 +355,15 @@ Gets the being added as a target. - - - Gets or sets a value indicating whether or not the target is allowed to be added. - - - + - Gets or sets the amount of AHP to add to SCP-096 if is true. + Gets or sets how much time is added to SCP-096's enrage timer if is true. + This does not affect anything if he doesn't already have any targets before this event is called. - + - Gets or sets how much time is added to SCP-096's enrage timer if is true. + Gets or sets a value indicating whether or not the target is allowed to be added. @@ -366,11 +388,6 @@ Gets or sets a value indicating whether the announcement is going to be global or not. - - - Gets or sets a value indicating whether the event can be executed or not. - - Contains all informations before C.A.S.S.I.E announces the NTF entrance. @@ -427,7 +444,7 @@ - Gets the killed . + Gets the killed . @@ -459,11 +476,6 @@ The ban details. - - - Gets the banned player. - - Gets the banned player. @@ -489,7 +501,7 @@ Contains all informations before banning a player from the server. - + Initializes a new instance of the class. @@ -540,72 +552,77 @@ The player who's controlling SCP-096. Indicates whether or not SCP-096 can calm down. - + - Contains all informations before changing item attachments. + Contains all information before a player cancels usage of a medical item. - + - Initializes a new instance of the class. + Initializes a new instance of the class. - - - - - + The player who's stopping the use of the medical item. + - + - Contains all informations before changing item attributes. + Contains all informations before changing item attachments. - + - Initializes a new instance of the class. + Initializes a new instance of the class. - - + + + + - + + + + - Gets the old item. + Gets the new item sight attachment. - + - Gets or sets the item. + Gets the new item barrel attachment. - + - Gets or sets the item type. + Gets the new item other attachment. - + - Gets or sets the new item durability. + Contains all informations before changing item attributes. - + - Gets or sets the new item unique id. + Initializes a new instance of the class. + + + - + - Gets or sets the new item sight attachment. + Gets the old item. - + - Gets or sets the new item barrel attachment. + Gets or sets the item. - + - Gets or sets the new item other attachment. + Gets the new item unique id. @@ -623,8 +640,8 @@ Initializes a new instance of the class. - - + + @@ -637,16 +654,16 @@ Gets or sets the camera SCP-079 will be moved to. - + - Gets or sets the amount of AP that will be required to switch cameras. + Gets or sets the amount of auxiliary power that will be required to switch cameras. Gets or sets a value indicating whether or not SCP-079 can switch cameras. - Defaults to a value describing whether or not SCP-079 has enough AP to switch. - Can be set to true to allow a switch regardless of SCP-079's AP amount. + Defaults to a value describing whether or not SCP-079 has enough auxiliary power to switch. + Can be set to true to allow a switch regardless of SCP-079's auxiliary power amount. @@ -654,14 +671,22 @@ Contains all informations before changing item durability. - + Initializes a new instance of the class. - + + + + + + + Gets or sets the new durability to be used by the weapon. + + Contains all informations before a player changes his group. @@ -718,17 +743,49 @@ Gets a value indicating whether the player is being intercom muted or unmuted. + + + Contains all information for when the server is turning a pickup into a live grenade. + + + + + Initializes a new instance of the class. + + The being changed. + The duration, in seconds, of the fuse time to be used when the grenade goes live. + Whether or not the event is allowed to continue. + + + + Gets a value indicating the pickup being changed. + + + + + Gets or sets a value indicating what type of grenade will be spawned. + + + + + Gets or sets a value indicating whether the pickup will be changed. + + + + + Gets or sets a value indicating how long the fuse of the changed grenade will be. + + - Contains all informations before a player's held item changes. + Contains all information before a player's held item changes. - + Initializes a new instance of the class. - @@ -736,22 +793,22 @@ Gets the player who's changing the item. - + - Gets or sets the old item. + Gets or sets the new item. - + - Gets the new item. + Gets or sets a value indicating whether the event is allowed to continue. - Contains all informations before a player changes the SCP-914 knob setting. + Contains all information before a player changes the SCP-914 knob setting. - + Initializes a new instance of the class. @@ -779,11 +836,12 @@ Contains all informations before a player changes the warhead lever status. - + Initializes a new instance of the class. + @@ -791,11 +849,56 @@ Gets the player who's changing the warhead status. + + + Gets a value indicating whether the lever is enabled. + + Gets or sets a value indicating whether or not the lever status will change. + + + Contains all information before MicroHID state is changed. + + + + + Initializes a new instance of the class. + + + + + + + + + + Gets the player who's using the MicroHID. + + + + + Gets the MicroHID instance. + + + + + Gets the old MicroHID state. + + + + + Gets or sets the new MicroHID state. + + + + + Gets or sets a value indicating whether the MicroHID state can be changed or not. + + Contains all informations before a player's mute status is changed. @@ -824,20 +927,55 @@ Gets a value indicating whether the player is being muted or unmuted. + + + Contains all informations before radio preset is changed. + + + + + Initializes a new instance of the class. + + + + + + + + + Gets the player who's using the radio. + + + + + Gets the old radio preset value. + + + + + Gets or sets the new radio preset value. + Client radio graphics won't sync with this value. + + + + + Gets or sets a value indicating whether the radio preset can be changed or not. + Client radio graphics won't sync with . + + - Contains all informations before a player's changes. + Contains all information before a player's changes. - + Initializes a new instance of the class. - - - + + @@ -851,17 +989,102 @@ - Gets base items that the player will receive. + Gets base items that the player will receive. (Changing this will overwrite their current inventory if Lite is true!). + + + + + Gets or sets the reason for their class change. + + + + + Gets or sets a value indicating whether the position and items has to be preserved after changing the role. + + + + + Gets or sets a value indicating whether the event can continue. + + + + + Contains all informations before SCP-096 charges. + + + + + Initializes a new instance of the class. + + + + + + + + Gets the SCP-096 instance. + + + + + Gets the player who is controlling SCP-096. - + - Gets or sets a value indicating whether the player escaped or not. + Gets or sets a value indicating whether or not SCP-096 can charge. - + - Gets or sets a value indicating whether the position has to be preserved after changing the role. + Contains all informations before SCP-096 charges a player. + + + + + Initializes a new instance of the class. + + + + + + + + + + + + Gets the SCP-096 instance. + + + + + Gets the player who is controlling SCP-096. + + + + + Gets the player who SCP-096 is charging. + + + + + Gets a value indicating whether the target is one of SCP-096's targets. + + + + + Gets or sets the inflicted damage. + + + + + Gets or sets a value indicating whether SCP-096's charge should be ended next frame. + + + + + Gets or sets a value indicating whether or not SCP-096 can hit the target. @@ -869,12 +1092,12 @@ Contains all informations before a player closes a generator. - + Initializes a new instance of the class. The player who's closing the generator. - The instance. + The instance. Indicates whether or not the generator can be closed. @@ -955,19 +1178,6 @@ Gets or sets the damage the window will receive. - - - Contains all informations before a player deactivates a workstation. - - - - - Initializes a new instance of the class. - - - - Gets or sets a value indicating whether or not the workstation can be deactivated. - Contains all informations before decontaminating the light containment zone. @@ -1052,15 +1262,15 @@ - Contains all informations before a player drops an item. + Contains all information before a player drops an item. - + Initializes a new instance of the class. - + The Serial number of the item. @@ -1112,52 +1322,53 @@ Gets or sets a value indicating whether or not the player can be killed. - + - Contains all informations before a player ejects a tablet from a generator. + Contains all informations before SCP-079 changes rooms via elevator. - + - Initializes a new instance of the class. + Initializes a new instance of the class. - The player who's ejecting the tablet. - The instance. - Indicates whether or not the tablet can be ejected. + + + + - + Contains all informations before SCP-079 changes rooms via elevator. - + - Initializes a new instance of the class. + Initializes a new instance of the class. - - - - + + + + - + Gets the player who is controlling SCP-079. - + Gets or sets the that SCP-079 will be moved to. - + - Gets or sets the amount of AP will be consumed during the level change. + Gets or sets the amount of auxiliary power required to teleport to an elevator camera. - + Gets or sets a value indicating whether or not SCP-079 can teleport. - Defaults to a describing whether or not SCP-079 has enough AP to teleport. + Defaults to a describing whether or not SCP-079 has enough auxiliary power to teleport. @@ -1280,16 +1491,14 @@ - Contains all informations before a player escapes. + Contains all information before a player escapes. - + Initializes a new instance of the class. - - @@ -1336,18 +1545,24 @@ - Contains all informations before a grenade explodes. + Contains all information before a grenade explodes. + + + + + Initializes a new instance of the class. + + + - + Initializes a new instance of the class. - - - + @@ -1359,16 +1574,11 @@ Gets the player who thrown the grenade. - + Gets the players who could be affected by the grenade, if any, and the damage that would hurt them. - - - Gets the players who could be affected by the grenade, if any. - - Gets a value indicating whether the grenade is a frag or flash grenade. @@ -1513,17 +1723,23 @@ Contains all informations after activating a generator. - + Initializes a new instance of the class. + Gets the activated generator. + + + Gets or sets a value indicating whether the generator can be activated or not. + + Contains all informations before handcuffing a player. @@ -1563,7 +1779,7 @@ - + @@ -1576,7 +1792,7 @@ Gets the target player, who is going to be hurt. - + Gets the hit informations. @@ -1591,11 +1807,6 @@ Gets the damage type. - - - Gets the tool that damaged the player. - - Gets or sets the amount of inflicted damage. @@ -1606,34 +1817,6 @@ Gets or sets a value indicating whether or not the player will be dealt damage. - - - Contains all informations before a player inserts a tablet into a generator. - - - - - Initializes a new instance of the class. - - - - - - - - Gets the player who's inserting a tablet into the generator. - - - - - Gets the instance. - - - - - Gets or sets a value indicating whether or not the tablet can be inserted. - - Contains all informations after a player has interacted with an interactable. @@ -1689,7 +1872,7 @@ - + @@ -1699,7 +1882,7 @@ - Gets the instance. + Gets the instance. @@ -1709,12 +1892,7 @@ - Gets the current . - - - - - Gets the . + Gets the current . @@ -1727,14 +1905,13 @@ Contains all informations before a player interacts with a locker. - + Initializes a new instance of the class. - @@ -1753,14 +1930,6 @@ Gets the interacting chamber. - - - - - - Gets the locker id. - - Gets the chamber id. @@ -1776,13 +1945,13 @@ Contains all informations before SCP-079 triggers a tesla gate. - + Initializes a new instance of the class. - + @@ -1794,6 +1963,11 @@ Gets the that SCP-079 is triggering. + + + Gets or sets the amount of auxiliary power required to interact with a tesla gate through SCP-079. + + Gets or sets a value indicating whether or not SCP-079 can interact with the tesla gate. @@ -1823,10 +1997,10 @@ - Contains all informations after a player drops an item. + Contains all information after a player drops an item. - + Initializes a new instance of the class. @@ -1868,15 +2042,10 @@ Initializes a new instance of the class. - + - - - Gets the kicked player. - - Gets the kicked player. @@ -1983,12 +2152,45 @@ Gets or sets a value indicating whether the report can be processed or not. + + + Contains all information before SCP-079 lockdowns a room. + + + + + Initializes a new instance of the class. + + + + + + + + Gets the player who's controlling SCP-079. + + + + + Gets the of the room that will be locked down. + + + + + Gets or sets the amount of auxiliary power required to lockdown a room. + + + + + Gets or sets a value indicating whether or not SCP-079 can lockdown a room. + + Contains all informations before a player opens a generator. - + Initializes a new instance of the class. @@ -2011,12 +2213,30 @@ Gets or sets a value indicating whether or not the generator can be opened. + + + Contains all informations before a player picks up an ammo. + + + + + Initializes a new instance of the class. + + The player who's picking up the ammo. + The pickup to be picked up. + Gets or sets a value indicating whether or not the ammo can be picked up. + + + + Gets the of the item. + + Contains all informations before a player picks up an item. - + Initializes a new instance of the class. @@ -2108,42 +2328,34 @@ Gets or sets a value indicating whether or not the blood can be placed. - + Contains all informations before placing a decal. - + - Initializes a new instance of the class. + Initializes a new instance of the class. - - - - - + + - + Gets the decal owner. - + Gets or sets the decal position. - + Gets or sets the decal rotation. - - - Gets or sets the decal type. - - - + Gets or sets a value indicating whether or not the decal can be placed. @@ -2153,7 +2365,7 @@ Contains all informations before pre-autenticating a player. - + Initializes a new instance of the class. @@ -2162,7 +2374,7 @@ - + @@ -2191,7 +2403,12 @@ - Gets a value indicating whether the player can be authenticated or not. + Gets or sets a value indicating whether the player can be authenticated or not. + + + + + Gets a value indicating whether the server is full. @@ -2316,25 +2533,24 @@ - Contains all informations before a player's weapon is reloaded. + Contains all information before a player's weapon is reloaded. - + Initializes a new instance of the class. - - + - Gets the player who's reloading the weapon. + Gets the being reloaded. - + - Gets a value indicating whether only the reload animation is being reproduced or not. + Gets the player who's reloading the weapon. @@ -2400,11 +2616,12 @@ Contains all informations before spawning a wave of or . - + Initializes a new instance of the class. + @@ -2461,142 +2678,72 @@ Gets or sets the time to restart the next round. - + - Contains all informations before sending a console message. + Contains all the information after sending a C.A.S.S.I.E. message. - + - Initializes a new instance of the class. - - - - - - - - - - - - Gets the player who's sending the command. - - - - - Gets the command name. - - - - - Gets the command arguments. - - - - - Gets a value indicating whether the command is encrypted or not. - - - - - Gets or sets the return message, that will be shown to the user in the console. - - - - - Gets or sets the color of the return message. - - - - - Gets or sets a value indicating whether the event can be executed or not. - - - - - Gets or sets a value indicating whether or not the console command can be sent. - - - - - Contains all informations before sending a remote admin message. - - - - - Initializes a new instance of the class. - - - - - - - - - - Gets the sending the command. - - - - - Gets the player who's sending the command. - - - - - Gets the command name. + Initializes a new instance of the class. + + + + Indicates whether the event can be executed or not. - + - Gets the command arguments. + Gets or sets the message. - + - Gets or sets the message that will be returned back to the . + Gets or sets a value indicating whether or not the message should be held. - + - Gets or sets a value indicating whether whether or not the command was a success. + Gets or sets a value indicating whether or not the message should make noise. - + - Gets or sets a value indicating whether or not the RemoteAdmin command can be sent. + Gets or sets a value indicating whether or not the message can be sent. - Contains all informations before a player fires a weapon. + Contains all information before a player fires a weapon. - + Initializes a new instance of the class. - - - + Gets the player who's shooting. - + - Gets the target the player's shooting at. + Gets or sets the for the event. - + Gets or sets the position of the shot. + + + Gets or sets the nedId of the target of the shot. + + Gets or sets a value indicating whether or not the shot can be fired. @@ -2604,19 +2751,17 @@ - Contains all informations after a player has fired a weapon. + Contains all information after a player has fired a weapon. - + Initializes a new instance of the class. - - - + The hit. + - @@ -2625,17 +2770,12 @@ - Gets the target of the shot. + Gets the target of the shot. Can be null!. - + - Gets the hitbox type of the shot. - - - - - Gets the hitbox type of the shot. + Gets the hitbox type of the shot. Can be null!. @@ -2653,35 +2793,17 @@ Gets or sets a value indicating whether or not the shot can hurt the target. - - - Contains all informations after the server spawns an item. - - - - - Initializes a new instance of the class. - - - - - - Gets or sets the item pickup. - - - Contains all informations before spawning a player. + Contains all information before spawning a player. - + Initializes a new instance of the class. - - @@ -2705,37 +2827,19 @@ - Contains all informations before the server spawns an item. + Contains all information before the server spawns an item. - + Initializes a new instance of the class. - - - - + - + - Gets or sets the item to be dropped. - - - - - Gets or sets the position to spawn the item. - - - - - Gets or sets the rotation to spawn the item. - - - - - Gets or sets a value indicating whether or not the pickup will be locked. + Gets or sets a value indicating the pickup being spawned. @@ -2881,7 +2985,7 @@ - + @@ -2894,9 +2998,9 @@ Gets the room that the speaker is located in. - + - Gets or sets the amount of AP that will be removed for the first time when using speakers through SCP-079. + Gets or sets the amount of auxiliary power required to use a speaker through SCP-079. @@ -2923,7 +3027,7 @@ - Gets the to be pried open. + Gets the to be pried open. @@ -2953,24 +3057,18 @@ Gets or sets a value indicating whether or not the warhead can be stopped. - + - Contains all informations before a player cancels usage of a medical item. - - - - - Initializes a new instance of the class. + Contains all informations before a player ejects a tablet from a generator. - The player who's stopping the use of the medical item. - The medical item that won't be consumed. - The cooldown left for completing the use of the medical item. - Whether or not the player can cancel usage of the medical item. - + - Gets the medical item cooldown. + Initializes a new instance of the class. + The player who's ejecting the tablet. + The instance. + Indicates whether or not the tablet can be ejected. @@ -3062,55 +3160,55 @@ Gets or sets a value indicating whether or not SCP-106 can teleport using a portal. - + - Contains all informations before a player throws a greande. + Contains all information before a player throws a grenade. - + - Initializes a new instance of the class. + Initializes a new instance of the class. - - - - - - Indicates whether the event can be executed or not. + + - + - Gets the player who's throwing the greande. + Gets the player who's throwing the grenade. - + - Gets the instance. + Gets or sets the item being thrown. - + - Gets the grenade id. + Gets or sets the type of throw being requested. - + - Gets or sets the grenade type. + Gets or sets a value indicating whether or not the grenade can be thrown. - + - Gets or sets a value indicating whether the throw is slow or not. + Contains all informations before SCP-079 interacts with a door. - + - Gets or sets the fuse time. + Initializes a new instance of the class. + + + + - + - Gets or sets a value indicating whether or not the grenade can be thrown. + Gets or sets the amount of auxiliary power required to trigger a door through SCP-079. @@ -3141,118 +3239,308 @@ Gets or sets a value indicating whether or not the tesla is going to be activated. + + + Contains all informations before SCP-096 tries not to cry. + + + + + Initializes a new instance of the class. + + + + + + + + + Gets the SCP-096 instance. + + + + + Gets the player who is controlling SCP-096. + + + + + Gets the to be cried on. + + + + + Gets or sets a value indicating whether or not SCP-096 can try not to cry. + + Contains all informations before a generator is unlocked. - + Initializes a new instance of the class. - - - + + + + + + + Gets the player who's unlocking the generator. + + + + + Gets the generator that is going to be unlocked. + + + + + Gets or sets a value indicating whether or not the generator can be unlocked. + + + + + Contains all information before SCP-914 upgrades an item. + + + + + Initializes a new instance of the class. + + + + + + + + + Gets the instance. + + + + + Gets the who owns the item to be upgraded. + + + + + Gets a list of items to be upgraded inside SCP-914. + + + + + Gets or sets SCP-914 working knob setting. + + + + + Gets or sets a value indicating whether or not the upgrade is successful. + + + + + Contains all information before SCP-914 upgrades an item. + + + + + Initializes a new instance of the class. + + + + + + + + + Gets the instance. + + + + + Gets or sets the position the item will be output to. + + + + + Gets a list of items to be upgraded inside SCP-914. + + + + + Gets or sets SCP-914 working knob setting. + + + + + Gets or sets a value indicating whether or not the upgrade is successful. + + + + + Contains all information before SCP-914 upgrades a player. + + + + + Initializes a new instance of the class. + + The being upgraded. + + The being used. + + + + + + Gets the player being upgraded. + + + + + Gets or sets the location the player will be teleported to. + + + + + Gets or sets a value indicating whether or not the event can continue. + + + + + Gets or sets a value indicating whether or not items will be upgraded. + + + + + Gets or sets a value indicating whether or not only held items are upgraded. + + + + + Gets or sets the being used. + + + + + Contains all information after a player used an item. + + + + + Initializes a new instance of the class. + + + + + + + Gets the player who used the medical item. + - + - Gets the player who's unlocking the generator. + Gets the medical item that the player consumed. - + - Gets the generator that is going to be unlocked. + Contains all information before a player uses a medical item. - + - Gets or sets a value indicating whether or not the generator can be unlocked. + Initializes a new instance of the class. + The player who's going to use the medical item. + + - + - Contains all informations before SCP-914 upgrades players and items. + Gets or sets the medical item cooldown. - + - Initializes a new instance of the class. + Gets or sets a value indicating whether or not the player can use the medical item. - - - - - - + - Gets the instance. + Contains all information before MicroHID energy is changed. - + - Gets a list of players inside SCP-914. + Initializes a new instance of the class. + + + + + - + - Gets a list of items to be upgraded inside SCP-914. + Gets the player who's using the MicroHID. - + - Gets or sets SCP-914 working knob setting. + Gets the MicroHID instance. - + - Gets or sets a value indicating whether or not the upgrade is successful. + Gets the current state of the MicroHID. - + - Contains all informations after a player uses a medical item. + Gets or sets the MicroHID energy drain. - + - Initializes a new instance of the class. + Gets or sets a value indicating whether the MicroHID energy can be changed or not. - - - + - Gets the player who used the medical item. + Contains all informations before radio battery charge is changed. - + - Gets the medical item that the player consumed. + Initializes a new instance of the class. + + + + - + - Contains all informations before a player uses a medical item. + Gets the Radio which is being used. - + - Initializes a new instance of the class. + Gets the player who's using the radio. - The player who's going to use the medical item. - The medical item to be used. - - - + - Gets or sets the medical item cooldown. + Gets or sets the radio battery drain per second. - + - Gets or sets a value indicating whether or not the player can use the medical item. + Gets or sets a value indicating whether the radio battery charge can be changed or not. @@ -3298,11 +3586,6 @@ Gets the plugin instance. - - - Gets a list of types and methods for which EXILED patches should not be run. - - Gets a set of types and methods for which EXILED patches should not be run. @@ -3329,7 +3612,7 @@ - Checks the list and un-patches any methods that have been defined there. Once un-patching has been done, they can be patched by plugins, but will not be re-patchable by Exiled until a server reboot. + Checks the list and un-patches any methods that have been defined there. Once un-patching has been done, they can be patched by plugins, but will not be re-patchable by Exiled until a server reboot. @@ -3358,6 +3641,22 @@ Source event. Event is null. + + + Cassie related events. + + + + + Invoked before sending a cassie message. + + + + + Called before sending a cassie message. + + The instance. + Handles event. @@ -3445,7 +3744,7 @@ Map related events. - + Invoked before placing decals. @@ -3472,7 +3771,7 @@ - Invoked after a has been activated. + Invoked after a has been activated. @@ -3495,49 +3794,49 @@ Invoked before an item is spawned. - + - Invoked after an item is spawned. + Invoked after the map is generated. - + - Invoked after the map is generated. + Invoked before the server changes a pickup into a grenade, when triggered by an explosion. - + Called before placing a decal. - The instance. + The instance. Called before placing bloods. - The instance. + The instance. Called before announcing the light containment zone decontamination. - The instance. + The instance. Called before announcing an SCP termination. - The instance. + The instance. Called before announcing the NTF entrance. - The instance. + The instance. - Called after a has been activated. + Called after a has been activated. The instance. @@ -3565,16 +3864,16 @@ The instance. - + - Called after an item is spawned. + Called after the map is generated. - The instance. - + - Called after the map is generated. + Called before the server changes a into a live Grenade when hit by an explosion. + The instance. @@ -3606,25 +3905,16 @@ Invoked after a player has been banned from the server. - + Invoked after a player uses a medical item. - Invoked after , if a player's class has + Invoked after , if a player's class has changed during their health increase, won't fire. - - - Invoked after a player dequips a medical item. - - - Invoked before , if a player cancels the - use of a medical item, won't fire. - - - + Invoked after a player has stopped the use of a medical item. @@ -3644,7 +3934,7 @@ Invoked before activating the warhead panel. - + Invoked before using a medical item. @@ -3688,10 +3978,11 @@ Invoked before changing a player's role. + If you set IsAllowed to false when Escape is true, tickets will still be given to the escapee's team even though they will 'fail' to escape. Use to block escapes instead. - + - Invoked before throwing a grenade. + Invoked before throwing an item. @@ -3699,9 +3990,9 @@ Invoked before dropping an item. - + - Invoked after an item has been dropped. + Invoked before picking up an ammo. @@ -3731,7 +4022,7 @@ - Invoked after a player shoots a weapon. + Invoked after a player gets shot. @@ -3819,12 +4110,12 @@ Invoked before a player closes a generator. - + Invoked before a player inserts a workstation tablet into a generator. - + Invoked before a player ejects the workstation tablet out of a generator. @@ -3834,24 +4125,34 @@ Invoked before a player receives a status effect. - + + + Invoked before an user's mute status is changed. + + + - Invoked before a workstation is activated. + Invoked before an user's intercom mute status is changed. - + - Invoked before a workstation is deactivated. + Invoked before a user's radio battery charge is changed. - + - Invoked before an user's mute status is changed. + Invoked before a user's radio preset is changed. - + - Invoked before an user's intercom mute status is changed. + Invoked before a player's MicroHID state is changed. + + + + + Invoked before a player's MicroHID energy is changed. @@ -3884,23 +4185,17 @@ The instance. - + Called after a player used a medical item. - The instance. + The instance. - - - Called after a player dequipped a medical item. - - The instance. - - + Called after a player has stopped the use of a medical item. - The instance. + The instance. @@ -3920,11 +4215,11 @@ The instance. - + Called before using a medical item. - The instance. + The instance. @@ -3973,12 +4268,13 @@ Called before changing a player's role. The instance. + If you set IsAllowed to false when Escape is true, tickets will still be given to the escapee's team even though they will 'fail' to escape. Use to block escapes instead. - + Called before throwing a grenade. - The instance. + The instance. @@ -3986,11 +4282,11 @@ The instance. - + - Called after a player drops an item. + Called before a player picks up an ammo. - The instance. + The instance. @@ -4092,19 +4388,19 @@ Called before a player interacts with a door. - The instance. + The instance. Called before a player interacts with an elevator. - The instance. + The instance. Called before a player interacts with a locker. - The instance. + The instance. @@ -4130,17 +4426,17 @@ The instance. - + Called before a player inserts a workstation tablet into a generator. - The instance. + The instance. - + Called before a player ejects the workstation tablet out of a generator. - The instance. + The instance. @@ -4148,18 +4444,6 @@ The instance. - - - Called before a workstation is activated. - - The instance. - - - - Called before a workstation is deactivated. - - The instance. - Called before an user's mute status is changed. @@ -4172,6 +4456,30 @@ The instance. + + + Called before a user's radio battery charge is changed. + + The instance. + + + + Called before a user's radio preset is changed. + + The instance. + + + + Called before a player's MicroHID state is changed. + + The instance. + + + + Called before a player's MicroHID energy is changed. + + The instance. + SCP-049 related events. @@ -4224,16 +4532,21 @@ Invoked before triggering a tesla with SCP-079. - + Invoked before triggering a door with SCP-079. - + Invoked before SCP-079 teleports using an elevator. + + + Invoked before SCP-079 lockdowns a room. + + Invoked before SCP-079 uses a speaker. @@ -4273,17 +4586,23 @@ The instance. - + Called before interacting with a door with SCP-079. - The instance. + The instance. - + Called before SCP-079 teleports using an elevator. - The instance. + The instance. + + + + Called before SCP-079 lockdowns a room. + + The instance. @@ -4328,6 +4647,21 @@ Invoked before SCP-096 begins prying open a gate. + + + Invoked before SCP-096 begins charging. + + + + + Invoked before SCP-096 tries not to cry. + + + + + Invoked before SCP-096 charges a player. + + Called before SCP-096 is enraged. @@ -4352,6 +4686,24 @@ The instance. + + + Called before SCP-096 begins charging. + + The instance. + + + + Called before SCP-096 starts trying not to cry. + + The instance. + + + + Called before SCP-096 charges a player. + + The instance. + SCP-106 related events. @@ -4411,9 +4763,19 @@ Handles SCP-914 related events. - + + + Invoked before SCP-914 upgrades a item. + + + - Invoked before SCP-914 upgrades players and items. + Invoked before SCP-914 upgrades an item in a player's inventory. + + + + + Invoked before SCP-914 upgrades a player. @@ -4426,11 +4788,23 @@ Invoked before changing the SCP-914 machine knob setting. - + + + Called before SCP-914 upgrades a item. + + The instance. + + + + Called before SCP-914 upgrades an item in a player's inventory. + + The instance. + + - Called before SCP-914 upgrades players and items. + Called before SCP-914 upgrades a player. - The instance. + The instance. @@ -4484,16 +4858,6 @@ Invoked before respawning a wave of Chaos Insurgency or NTF. - - - Invoked when sending a command through the in-game console. - - - - - Invoked when sending a command through the Remote Admin console. - - Invoked when sending a complaint about a player to the local server administrators. @@ -4504,6 +4868,11 @@ Invoked after the "reload configs" command is ran. + + + Invoked after the "reload translations" command is ran. + + Invoked after the "reload gameplay" command is ran. @@ -4549,22 +4918,10 @@ - Called before respawning a wave of Chaso Insurgency or NTF. + Called before respawning a wave of Chaos Insurgency or NTF. The instance. - - - Called when sending a command through in-game console. - - The instance. - - - - Called when sending a command through the Remote Admin console. - - The instance. - Called when sending a complaint about a player to the local server administrators. @@ -4576,6 +4933,11 @@ Called after the "reload configs" command is ran. + + + Called after the "reload translations" command is ran. + + Called after the "reload gameplay" command is ran. @@ -4634,16 +4996,10 @@ The instance. - - - Patches . - Adds the event. - - - + - Patches . - Adds the event. + Patches . + Adds the event. @@ -4678,19 +5034,27 @@ - Patches . + Patches . Adds the event. - Patches . + Patches . Adds the event. + + + Trims colliders from the given array. + + + The list of colliders to trim from. + An array of colliders. + - Patches . + Patches . Adds the event. @@ -4700,30 +5064,24 @@ Adds the event. - + - Patches . - Adds the event. + Patches . + Adds the event. - Patches . - Adds the and events. + Patches . + Adds the and events. - Patch the . + Patch the . Adds the event. - - - Patch the . - Adds the event. - - Patches . @@ -4732,7 +5090,7 @@ - Patches . + Patches . Adds the and events. @@ -4750,32 +5108,32 @@ - Patches . + Patches . Adds the event. - + - Patch the . - Adds the event. + Patches . + Adds the event. - + - Patches . - Adds the and events. + Patch the . + Adds the event. - + - Patch the . - Adds the event. + Patches . + Adds the event. - + - Patches . - Adds the event. + Patches . + Adds the and events. @@ -4792,10 +5150,15 @@ - Patches . + Patches . Adds the event. + + + Patches for . + + Patches . @@ -4804,7 +5167,7 @@ - Patches . + Patches . Adds the event. @@ -4814,12 +5177,6 @@ Adds the event. - - - Patches . - Adds the event. - - Patches . @@ -4834,26 +5191,32 @@ - Patches . + Patches . Adds the event. + + + Patches . + Adds the event. + + - Patches . + Patches . Adds the event. - Patches . + Patches . Adds the event. - Patches . - Adds the and events. + Patches . + Adds the events. @@ -4876,7 +5239,7 @@ - Patches . + Patches . Adds the event. @@ -4886,70 +5249,58 @@ Adds the event. - - - Handle the player connection. - - The instance. - - Patches the method. + Patches the method. Adds the event. - Patches . + Patches . Adds the event. - + - Patches . - Adds the event. + Patches . + Adds the and events. - + - Patches . - Adds the event. + Patches . + Adds the and events. - + - Patches . + Patches . Adds the and events. Patches . - Adds the event. + Adds the event. - Patches . + Patches . Adds the event. - - - Patches . - Adds the event. - - - Patches . + Patches . Adds the event. - + - Patches . - Adds the event. + Patches . + Adds the event. @@ -4958,28 +5309,34 @@ Adds the event. - + - Patches . - Adds the event. + Patches + Adds the event. - + - Patches a method, the class in which it's defined, is compiler-generated, . - Adds the event. + Patches + Adds the event. - + - Patches . - Adds the event. + Patches . + Adds the event. - + - Patches . - Adds the event. + Patches . + Adds the event. + + + + + Patches . + Adds the event. @@ -4990,13 +5347,13 @@ - Patches . - Adds the event. + Patches . + Adds the event. - Patches . + Patches . Adds the event. @@ -5008,19 +5365,10 @@ - Patches . + Patches . Adds the , , and event for SCP-079. - - - Prefix of . - - The instance. - The command to be executed. - The target game object. - Returns a value indicating whether the original method has to be executed or not. - Patches . @@ -5033,6 +5381,30 @@ Adds the event. + + + Patches . + Adds the event. + + + + + Patches . + Adds the event. + + + + + The hashset of already charged players. + Prevents double calling on the same player. + + + + + Patches . + Serves to clear the ChargedPlayers. + + Patches . @@ -5045,46 +5417,51 @@ Adds the event. + + + Patches the method. + Adds the event. + + - Patches . + Patches . Adds the event. - Patches . + Patches . Adds the event. - Patches . + Patches . Adds the event. - Patches . + Patches . Adds the event. - + - Patches . + Patches . Adds the event. - + - Patches . - Adds the event. + Patches . + Adds the event. - + - Patches . - Adds the event. + Patches to add the event. @@ -5114,34 +5491,22 @@ - Patches . + Patches . Adds the RoundStarted event. - - - Patches . - Adds the event. - - - - - Patches . - Adds the event. - - - - - Patches . - Adds the event. - - Patches a method, the class in which it's defined, is compiler-generated, . Adds the WaitingForPlayers event. + + + Patches . + Adds the event. + + Patches . @@ -5150,7 +5515,7 @@ - Patch the . + Patch the . Adds the event. @@ -5166,37 +5531,67 @@ Adds the event. - + + + Fixes Cassie ignoring unit name if it's changed via . + + + - Patches . - Fixes triggering due to the R.2 code by using the Y coordinate from the player's scale to multiply the offset. + Fixes property. - + - Patches . - Fixes triggering due to the R.3 code by using the Y coordinate from the player's scale to multiply the offset. + Fixes method. - + - Fixes property. + Patches . + Fixes overwatch players not spawning correctly. - + - Fixes property. + Handles building new instructions. - + - Fixes property. + Builds new instructions for enrage fix transpilers. + . + . + New . - + - Fixes method. + patches . + + + + + Patches . + + + + + Patches . + Fixes if a plugin gives you an weapon that you do not have ammo for, your attachments will not correctly appear on said weapon. + + + + + Patches for command logging. + + + + + Logs a command to the RA log file. + The command being logged. + The sender of the command. @@ -5205,7 +5600,56 @@ - Patches . + Checks friendly fire rules. + + + + + Checks if there can be damage between two players, according to the FF rules. + + The person attacking. + The person being attacked. + The attackers current role. + True if the attacker can damage the victim. + + + + Patches . + + + + + Patches . + + + + + Patches . + + + + + Patches . + + + + + Patches . + + + + + Patches to help manage . + + + + + Patches to help manage . + + + + + Patches . @@ -5215,7 +5659,7 @@ - Patches . + Patches . diff --git a/packages/EXILED.3.0.0-alpha.70/lib/net472/Exiled.Loader.dll b/packages/EXILED.3.0.0-alpha.70/lib/net472/Exiled.Loader.dll new file mode 100644 index 0000000..6d8b0a0 Binary files /dev/null and b/packages/EXILED.3.0.0-alpha.70/lib/net472/Exiled.Loader.dll differ diff --git a/packages/EXILED.2.2.4/lib/net472/Exiled.Loader.xml b/packages/EXILED.3.0.0-alpha.70/lib/net472/Exiled.Loader.xml similarity index 81% rename from packages/EXILED.2.2.4/lib/net472/Exiled.Loader.xml rename to packages/EXILED.3.0.0-alpha.70/lib/net472/Exiled.Loader.xml index 3395ded..8dadd9a 100644 --- a/packages/EXILED.2.2.4/lib/net472/Exiled.Loader.xml +++ b/packages/EXILED.3.0.0-alpha.70/lib/net472/Exiled.Loader.xml @@ -27,17 +27,7 @@ Used to handle plugin configs. - - - Gets the config serializer. - - - - - Gets the config serializer. - - - + Loads all plugin configs. @@ -57,7 +47,7 @@ The configs to be saved, already serialized in yaml format. Returns a value indicating whether the configs have been saved successfully or not. - + Saves plugin configs. @@ -176,6 +166,20 @@ + + + Converts a Vector2, Vector3 or Vector4 to Yaml configs and vice versa. + + + + + + + + + + + Basic configs validation. @@ -248,6 +252,16 @@ Gets plugin dependencies. + + + Gets the serializer for configs and translations. + + + + + Gets the deserializer for configs and translations. + + Runs the plugin manager, by loading all dependencies, plugins, configs and then enables all plugins. @@ -314,5 +328,43 @@ The provided plugin is null. The path of the plugin or null. + + + Used to handle plugin translations. + + + + + Loads all plugin translations. + + The raw translations to be loaded. + Returns a dictionary of loaded translations. + + + + Reads, Loads and Saves plugin translations. + + Returns a value indicating if the reloading process has been completed successfully or not. + + + + Saves plugin translations. + + The translations to be saved, already serialized in yaml format. + Returns a value indicating whether the translations have been saved successfully or not. + + + + Saves plugin translations. + + The translations to be saved. + Returns a value indicating whether the translations have been saved successfully or not. + + + + Read all plugin translations. + + Returns the read translations. + diff --git a/packages/EXILED.3.0.0-alpha.70/lib/net472/Exiled.Permissions.dll b/packages/EXILED.3.0.0-alpha.70/lib/net472/Exiled.Permissions.dll new file mode 100644 index 0000000..f0b3b15 Binary files /dev/null and b/packages/EXILED.3.0.0-alpha.70/lib/net472/Exiled.Permissions.dll differ diff --git a/packages/EXILED.2.2.4/lib/net472/Exiled.Permissions.xml b/packages/EXILED.3.0.0-alpha.70/lib/net472/Exiled.Permissions.xml similarity index 100% rename from packages/EXILED.2.2.4/lib/net472/Exiled.Permissions.xml rename to packages/EXILED.3.0.0-alpha.70/lib/net472/Exiled.Permissions.xml diff --git a/packages/EXILED.3.0.0-alpha.70/lib/net472/Exiled.Updater.dll b/packages/EXILED.3.0.0-alpha.70/lib/net472/Exiled.Updater.dll new file mode 100644 index 0000000..e77d5fd Binary files /dev/null and b/packages/EXILED.3.0.0-alpha.70/lib/net472/Exiled.Updater.dll differ diff --git a/packages/EXILED.2.2.4/lib/net472/Exiled.Updater.xml b/packages/EXILED.3.0.0-alpha.70/lib/net472/Exiled.Updater.xml similarity index 90% rename from packages/EXILED.2.2.4/lib/net472/Exiled.Updater.xml rename to packages/EXILED.3.0.0-alpha.70/lib/net472/Exiled.Updater.xml index 21c3562..e7eab1c 100644 --- a/packages/EXILED.2.2.4/lib/net472/Exiled.Updater.xml +++ b/packages/EXILED.3.0.0-alpha.70/lib/net472/Exiled.Updater.xml @@ -20,9 +20,6 @@ Gets a value that indicates which assemblies should be excluded from the update. - - -