diff --git a/Exiled.API/Features/Badge.cs b/Exiled.API/Features/Badge.cs index 77ef838934..31a46f0905 100644 --- a/Exiled.API/Features/Badge.cs +++ b/Exiled.API/Features/Badge.cs @@ -20,13 +20,11 @@ public struct Badge /// /// The badge text. /// The badge color. - /// The badge type. /// Indicates whether the badge is global or not. - public Badge(string text, string color, int type, bool isGlobal = false) + public Badge(string text, string color, bool isGlobal = false) { Text = text; Color = color; - Type = type; IsGlobal = isGlobal; } @@ -40,11 +38,6 @@ public Badge(string text, string color, int type, bool isGlobal = false) /// public string Color { get; } - /// - /// Gets the badge type. - /// - public int Type { get; } - /// /// Gets a value indicating whether the badge is global or not. /// @@ -82,6 +75,6 @@ public static bool IsValidColor(string hex, out Misc.PlayerInfoColorTypes? color /// Returns the Badge in a human-readable format. /// /// A string containing Badge-related data. - public override string ToString() => $"{Text} ({Color}) [{Type}] *{IsGlobal}*"; + public override string ToString() => $"{Text} ({Color}) [{IsGlobal}]"; } } \ No newline at end of file diff --git a/Exiled.API/Features/Npc.cs b/Exiled.API/Features/Npc.cs index 8a57379d04..dc4a55804a 100644 --- a/Exiled.API/Features/Npc.cs +++ b/Exiled.API/Features/Npc.cs @@ -173,7 +173,7 @@ public static Npc Spawn(string name, RoleTypeId role, int id = 0, string userId NetworkServer.AddPlayerForConnection(fakeConnection, newObject); try { - npc.ReferenceHub.characterClassManager.UserId = string.IsNullOrEmpty(userId) ? $"Dummy@localhost" : userId; + npc.ReferenceHub.authManager.UserId = string.IsNullOrEmpty(userId) ? $"Dummy@localhost" : userId; } catch (Exception e) { diff --git a/Exiled.API/Features/Player.cs b/Exiled.API/Features/Player.cs index 8d24bc3027..7c12d70585 100644 --- a/Exiled.API/Features/Player.cs +++ b/Exiled.API/Features/Player.cs @@ -244,16 +244,13 @@ public int Id /// /// Gets the player's user id. /// - public string UserId => referenceHub.characterClassManager.UserId; + public string UserId => referenceHub.authManager.UserId; /// /// Gets or sets the player's custom user id. /// - public string CustomUserId - { - get => ReferenceHub.characterClassManager.UserId2; - set => ReferenceHub.characterClassManager.UserId2 = value; - } + [Obsolete("Remove by NW", true)] + public string CustomUserId { get; set; } /// /// Gets the player's user id without the authentication. @@ -263,7 +260,7 @@ public string CustomUserId /// /// Gets the player's authentication token. /// - public string AuthenticationToken => ReferenceHub.characterClassManager.AuthToken; + public string AuthenticationToken => ReferenceHub.authManager.GetAuthToken(); /// /// Gets the player's authentication type. @@ -407,7 +404,7 @@ public float InfoViewRange /// /// Gets a value indicating whether or not the player has Do Not Track (DNT) enabled. If this value is , data about the player unrelated to server security shouldn't be stored. /// - public bool DoNotTrack => ReferenceHub.serverRoles.DoNotTrack; + public bool DoNotTrack => ReferenceHub.authManager.DoNotTrack; /// /// Gets a value indicating whether the player is fully connected to the server. @@ -437,7 +434,7 @@ public float InfoViewRange public bool IsOverwatchEnabled { get => ReferenceHub.serverRoles.IsInOverwatch; - set => ReferenceHub.serverRoles.SetOverwatchStatus((byte)(value ? 1 : 0)); + set => ReferenceHub.serverRoles.IsInOverwatch = value; } /// @@ -935,7 +932,7 @@ public float Stamina /// /// Gets a value indicating whether or not the staff bypass is enabled. /// - public bool IsStaffBypassEnabled => ReferenceHub.serverRoles.BypassStaff; + public bool IsStaffBypassEnabled => ReferenceHub.authManager.BypassBansFlagSet; /// /// Gets or sets the player's group name. @@ -1010,7 +1007,7 @@ public Badge? GlobalBadge ServerRoles serverRoles = ReferenceHub.serverRoles; - return new Badge(serverRoles._bgt, serverRoles._bgc, serverRoles.GlobalBadgeType, true); + return new Badge(serverRoles._bgt, serverRoles._bgc, true); } } @@ -1023,21 +1020,21 @@ public bool BadgeHidden set { if (value) - ReferenceHub.characterClassManager.UserCode_CmdRequestHideTag(); + ReferenceHub.serverRoles.TryHideTag(); else - ReferenceHub.characterClassManager.UserCode_CmdRequestShowTag__Boolean(false); + ReferenceHub.serverRoles.RefreshLocalTag(); } } /// /// Gets a value indicating whether or not the player is Northwood staff. /// - public bool IsNorthwoodStaff => ReferenceHub.serverRoles.Staff; + public bool IsNorthwoodStaff => ReferenceHub.authManager.NorthwoodStaff; /// /// Gets a value indicating whether or not the player is a global moderator. /// - public bool IsGlobalModerator => ReferenceHub.serverRoles.RaEverywhere; + public bool IsGlobalModerator => ReferenceHub.authManager.RemoteAdminGlobalAccess; /// /// Gets a value indicating whether or not the player is in the pocket dimension. @@ -1687,13 +1684,13 @@ public void SetRank(string name, UserGroup group) userGroup.HiddenByDefault = !group.Cover; userGroup.Cover = group.Cover; - ReferenceHub.serverRoles.SetGroup(userGroup, false, false, group.Cover); + ReferenceHub.serverRoles.SetGroup(userGroup, false, false); } else { ServerStatic.GetPermissionsHandler()._groups.Add(name, group); - ReferenceHub.serverRoles.SetGroup(group, false, false, group.Cover); + ReferenceHub.serverRoles.SetGroup(group, false, false); } if (ServerStatic.GetPermissionsHandler()._members.ContainsKey(UserId)) @@ -1884,7 +1881,7 @@ public int RemoveItem(Func predicate, bool destroy = true) /// /// The message to be sent. /// The message color. - public void SendConsoleMessage(string message, string color) => ReferenceHub.characterClassManager.ConsolePrint(message, color); + public void SendConsoleMessage(string message, string color) => referenceHub.gameConsoleTransmission.SendToClient(message, color); /// /// Disconnects the player. diff --git a/Exiled.API/Features/Roles/Scp106Role.cs b/Exiled.API/Features/Roles/Scp106Role.cs index ffe00dc2ff..cb0b9354f1 100644 --- a/Exiled.API/Features/Roles/Scp106Role.cs +++ b/Exiled.API/Features/Roles/Scp106Role.cs @@ -80,9 +80,9 @@ internal Scp106Role(Scp106GameRole baseRole) public Scp106VigorAbilityBase VigorAbility { get; } /// - /// Gets the . + /// Gets the . /// - public Scp106Vigor VigorComponent => VigorAbility.Vigor; + public VigorStat VigorComponent => VigorAbility.Vigor; /// /// Gets the . diff --git a/Exiled.CustomItems/Commands/List/Tracked.cs b/Exiled.CustomItems/Commands/List/Tracked.cs index 1813335a71..ed826f463e 100644 --- a/Exiled.CustomItems/Commands/List/Tracked.cs +++ b/Exiled.CustomItems/Commands/List/Tracked.cs @@ -44,7 +44,7 @@ private Tracked() /// public bool Execute(ArraySegment arguments, ICommandSender sender, out string response) { - if (!sender.CheckPermission("customitems.list.insideinventories") && sender is PlayerCommandSender playerSender && !playerSender.ServerRoles.RaEverywhere) + if (!sender.CheckPermission("customitems.list.insideinventories") && sender is PlayerCommandSender playerSender && !playerSender.FullPermissions) { response = "Permission Denied, required: customitems.list.insideinventories"; return false; diff --git a/Exiled.Events/Commands/PluginManager/Disable.cs b/Exiled.Events/Commands/PluginManager/Disable.cs index 9e9472f254..998a81cdfb 100644 --- a/Exiled.Events/Commands/PluginManager/Disable.cs +++ b/Exiled.Events/Commands/PluginManager/Disable.cs @@ -1,4 +1,4 @@ -// ----------------------------------------------------------------------- +// ----------------------------------------------------------------------- // // Copyright (c) Exiled Team. All rights reserved. // Licensed under the CC BY-SA 3.0 license. @@ -38,7 +38,7 @@ public bool Execute(ArraySegment arguments, ICommandSender sender, out s { const string perm = "pm.disable"; - if (!sender.CheckPermission(perm) && sender is PlayerCommandSender playerSender && !playerSender.ServerRoles.RaEverywhere) + if (!sender.CheckPermission(perm) && sender is PlayerCommandSender playerSender && !playerSender.FullPermissions) { response = $"You can't disable a plugin, you don't have \"{perm}\" permissions."; return false; diff --git a/Exiled.Events/Commands/PluginManager/Enable.cs b/Exiled.Events/Commands/PluginManager/Enable.cs index 345d43b7b0..5c0201b647 100644 --- a/Exiled.Events/Commands/PluginManager/Enable.cs +++ b/Exiled.Events/Commands/PluginManager/Enable.cs @@ -1,4 +1,4 @@ -// ----------------------------------------------------------------------- +// ----------------------------------------------------------------------- // // Copyright (c) Exiled Team. All rights reserved. // Licensed under the CC BY-SA 3.0 license. @@ -42,7 +42,7 @@ public bool Execute(ArraySegment arguments, ICommandSender sender, out s { const string perm = "pm.enable"; - if (!sender.CheckPermission(perm) && sender is PlayerCommandSender playerSender && !playerSender.ServerRoles.RaEverywhere) + if (!sender.CheckPermission(perm) && sender is PlayerCommandSender playerSender && !playerSender.FullPermissions) { response = $"You can't enable a plugin, you don't have \"{perm}\" permissions."; return false; diff --git a/Exiled.Events/Commands/PluginManager/Show.cs b/Exiled.Events/Commands/PluginManager/Show.cs index 071230c584..b703d44fcd 100644 --- a/Exiled.Events/Commands/PluginManager/Show.cs +++ b/Exiled.Events/Commands/PluginManager/Show.cs @@ -45,7 +45,7 @@ public bool Execute(ArraySegment arguments, ICommandSender sender, out s { const string perm = "pm.showplugins"; - if (!sender.CheckPermission(perm) && sender is PlayerCommandSender playerSender && !playerSender.ServerRoles.RaEverywhere) + if (!sender.CheckPermission(perm) && sender is PlayerCommandSender playerSender && !playerSender.FullPermissions) { response = $"You can't get a list of all plugins, you don't have \"{perm}\" permissions."; return false; diff --git a/Exiled.Events/Events.cs b/Exiled.Events/Events.cs index 707d55beac..46e4d9b7d6 100644 --- a/Exiled.Events/Events.cs +++ b/Exiled.Events/Events.cs @@ -12,6 +12,7 @@ namespace Exiled.Events using API.Enums; using API.Features; + using CentralAuth; using Exiled.Events.Features; using HarmonyLib; using InventorySystem.Items.Pickups; @@ -55,7 +56,7 @@ public override void OnEnabled() watch.Stop(); Log.Info($"{(Config.UseDynamicPatching ? "Non-event" : "All")} patches completed in {watch.Elapsed}"); - CharacterClassManager.OnInstanceModeChanged -= RoleAssigner.CheckLateJoin; + PlayerAuthenticationManager.OnInstanceModeChanged -= RoleAssigner.CheckLateJoin; SceneManager.sceneUnloaded += Handlers.Internal.SceneUnloaded.OnSceneUnloaded; MapGeneration.SeedSynchronizer.OnMapGenerated += Handlers.Internal.MapGenerated.OnMapGenerated; diff --git a/Exiled.Events/Handlers/Internal/Round.cs b/Exiled.Events/Handlers/Internal/Round.cs index 29ca9dd6f4..826b2e0363 100644 --- a/Exiled.Events/Handlers/Internal/Round.cs +++ b/Exiled.Events/Handlers/Internal/Round.cs @@ -7,6 +7,7 @@ namespace Exiled.Events.Handlers.Internal { + using CentralAuth; using Exiled.API.Features; using Exiled.API.Features.Roles; using Exiled.Events.EventArgs.Player; diff --git a/Exiled.Events/Patches/Events/Player/ChangingGroup.cs b/Exiled.Events/Patches/Events/Player/ChangingGroup.cs index d2d57826bf..640af3a71b 100644 --- a/Exiled.Events/Patches/Events/Player/ChangingGroup.cs +++ b/Exiled.Events/Patches/Events/Player/ChangingGroup.cs @@ -22,7 +22,7 @@ namespace Exiled.Events.Patches.Events.Player using static HarmonyLib.AccessTools; /// - /// Patches . + /// Patches . /// Adds the event. /// [EventPatch(typeof(Handlers.Player), nameof(Handlers.Player.ChangingGroup))] diff --git a/Exiled.Events/Patches/Events/Player/TogglingOverwatch.cs b/Exiled.Events/Patches/Events/Player/TogglingOverwatch.cs index d264722d9c..a77e03790b 100644 --- a/Exiled.Events/Patches/Events/Player/TogglingOverwatch.cs +++ b/Exiled.Events/Patches/Events/Player/TogglingOverwatch.cs @@ -11,6 +11,7 @@ namespace Exiled.Events.Patches.Events.Player using System.Reflection.Emit; using API.Features.Pools; + using CommandSystem.Commands.RemoteAdmin; using Exiled.Events.Attributes; using Exiled.Events.EventArgs.Player; @@ -19,10 +20,10 @@ namespace Exiled.Events.Patches.Events.Player using static HarmonyLib.AccessTools; /// - /// patches to add the event. + /// patches to add the event. /// [EventPatch(typeof(Handlers.Player), nameof(Handlers.Player.TogglingOverwatch))] - [HarmonyPatch(typeof(ServerRoles), nameof(ServerRoles.SetOverwatchStatus), typeof(byte))] + [HarmonyPatch(typeof(OverwatchCommand), nameof(OverwatchCommand.SetOverwatchStatus))] internal static class TogglingOverwatch { private static IEnumerable Transpiler(IEnumerable instructions, ILGenerator generator) diff --git a/Exiled.Events/Patches/Events/Player/Verified.cs b/Exiled.Events/Patches/Events/Player/Verified.cs index 90c695402b..25cdedf7c5 100644 --- a/Exiled.Events/Patches/Events/Player/Verified.cs +++ b/Exiled.Events/Patches/Events/Player/Verified.cs @@ -8,57 +8,29 @@ namespace Exiled.Events.Patches.Events.Player { using System; - using System.Collections.Generic; - using System.Reflection.Emit; using API.Features; - using API.Features.Pools; using Exiled.API.Extensions; using Exiled.Events.EventArgs.Player; using HarmonyLib; - using static HarmonyLib.AccessTools; +#pragma warning disable SA1313 // Parameter names should begin with lower-case letter /// - /// Patches . + /// Patches . /// Adds the event. /// - [HarmonyPatch(typeof(ServerRoles), nameof(ServerRoles.UserCode_CmdServerSignatureComplete__String__String__String__Boolean))] + [HarmonyPatch(typeof(ServerRoles), nameof(ServerRoles.UserCode_CmdSetLocalTagPreferences__BadgePreferences__BadgeVisibilityPreferences__BadgeVisibilityPreferences__Boolean))] internal static class Verified { - private static IEnumerable Transpiler(IEnumerable instructions, ILGenerator generator) + private static void Postfix(ServerRoles __instance) { - List newInstructions = ListPool.Pool.Get(instructions); + if (!Player.UnverifiedPlayers.TryGetValue(__instance._hub.gameObject, out Player player)) + Joined.CallEvent(__instance._hub, out player); - Label callJoined = generator.DefineLabel(); - - LocalBuilder player = generator.DeclareLocal(typeof(Player)); - - const int offset = -2; - int index = newInstructions.FindIndex(instruction => instruction.Calls(Method(typeof(ServerRoles), nameof(ServerRoles.RefreshPermissions)))) + offset; - - newInstructions.InsertRange( - index, - new[] - { - new(OpCodes.Ldarg_0), - new CodeInstruction(OpCodes.Call, Method(typeof(Verified), nameof(Verified.HandleCmdServerSignature))), - }); - - for (int z = 0; z < newInstructions.Count; z++) - yield return newInstructions[z]; - - ListPool.Pool.Return(newInstructions); - } - - private static void HandleCmdServerSignature(ServerRoles instance) - { - if (!Player.UnverifiedPlayers.TryGetValue(instance._hub.gameObject, out Player player)) - Joined.CallEvent(instance._hub, out player); - - Player.Dictionary.Add(instance._hub.gameObject, player); + Player.Dictionary.Add(__instance._hub.gameObject, player); player.IsVerified = true; player.RawUserId = player.UserId.GetRawUserId(); diff --git a/Exiled.Loader/AutoUpdateFiles.cs b/Exiled.Loader/AutoUpdateFiles.cs index 799fe6e420..bda484a30a 100644 --- a/Exiled.Loader/AutoUpdateFiles.cs +++ b/Exiled.Loader/AutoUpdateFiles.cs @@ -17,6 +17,6 @@ public static class AutoUpdateFiles /// /// Gets which SCP: SL version generated Exiled. /// - public static readonly Version RequiredSCPSLVersion = new(13, 2, 0, 0); + public static readonly Version RequiredSCPSLVersion = new(13, 2, 0, 2); } } \ No newline at end of file diff --git a/Exiled.Loader/AutoUpdateFiles.tt b/Exiled.Loader/AutoUpdateFiles.tt index 3fccefaff9..6c38d3d4c5 100644 --- a/Exiled.Loader/AutoUpdateFiles.tt +++ b/Exiled.Loader/AutoUpdateFiles.tt @@ -17,6 +17,6 @@ namespace Exiled.Loader /// /// Gets which SCP: SL version generated Exiled. /// - public static readonly Version RequiredSCPSLVersion = new(<#=GameCore.Version.Major#>, <#=GameCore.Version.Minor#>, <#=GameCore.Version.Revision#>, <#=GameCore.Version.BackwardRevision#>); + public static readonly Version RequiredSCPSLVersion = new(<#=GameCore.Version.Major#>, <#=GameCore.Version.Minor#>, 0, <#=GameCore.Version.Revision#>); } } \ No newline at end of file diff --git a/docs/docs/Resources/Intro.md b/docs/docs/Resources/Intro.md index 53713e86e9..bc425f7099 100644 --- a/docs/docs/Resources/Intro.md +++ b/docs/docs/Resources/Intro.md @@ -134,7 +134,7 @@ sidebar_position: 1
Ammo -```md title="Latest Updated: 8.0.0.0" +```md title="Latest Updated: 8.2.1.0" [0] None [1] Nato556 [2] Nato762 @@ -149,7 +149,7 @@ sidebar_position: 1
Doors -```md title="Latest Updated: 8.0.0.0" +```md title="Latest Updated: 8.2.1.0" [0] UnknownDoor [1] Scp914Door [2] GR18Inner @@ -218,62 +218,61 @@ sidebar_position: 1
Rooms -```md title="Latest Updated: 8.0.0.0" +```md title="Latest Updated: 8.2.1.0" [0] Unknown [1] LczArmory [2] LczCurve [3] LczStraight -[4] Lcz012 -[5] Lcz914 -[6] LczCrossing -[7] LczTCross -[8] LczCafe -[9] LczPlants -[10] LczToilets -[11] LczAirlock -[12] Lcz173 -[13] LczClassDSpawn -[14] LczCheckpointB -[15] LczGlassBox -[16] LczCheckpointA -[17] Hcz079 -[18] HczEzCheckpointA -[19] HczEzCheckpointB -[20] HczArmory -[21] Hcz939 -[22] HczHid -[23] Hcz049 -[24] HczCrossing -[25] Hcz106 -[26] HczNuke -[27] HczTesla -[28] HczServers -[29] HczTCross -[30] HczCurve -[31] Hcz096 -[32] EzVent -[33] EzIntercom -[34] EzGateA -[35] EzDownstairsPcs -[36] EzCurve -[37] EzPcs -[38] EzCrossing -[39] EzCollapsedTunnel -[40] EzConference -[41] EzStraight -[42] EzCafeteria -[43] EzUpstairsPcs -[44] EzGateB -[45] EzShelter -[46] Pocket -[47] Surface -[48] HczStraight -[49] EzTCross -[50] Lcz330 -[51] EzCheckpointHallway -[52] HczTestRoom -[53] HczElevatorA -[54] HczElevatorB +[4] Lcz914 +[5] LczCrossing +[6] LczTCross +[7] LczCafe +[8] LczPlants +[9] LczToilets +[10] LczAirlock +[11] Lcz173 +[12] LczClassDSpawn +[13] LczCheckpointB +[14] LczGlassBox +[15] LczCheckpointA +[16] Hcz079 +[17] HczEzCheckpointA +[18] HczEzCheckpointB +[19] HczArmory +[20] Hcz939 +[21] HczHid +[22] Hcz049 +[23] HczCrossing +[24] Hcz106 +[25] HczNuke +[26] HczTesla +[27] HczServers +[28] HczTCross +[29] HczCurve +[30] Hcz096 +[31] EzVent +[32] EzIntercom +[33] EzGateA +[34] EzDownstairsPcs +[35] EzCurve +[36] EzPcs +[37] EzCrossing +[38] EzCollapsedTunnel +[39] EzConference +[40] EzStraight +[41] EzCafeteria +[42] EzUpstairsPcs +[43] EzGateB +[44] EzShelter +[45] Pocket +[46] Surface +[47] HczStraight +[48] EzTCross +[49] Lcz330 +[50] EzCheckpointHallway +[51] HczTestRoom +[52] HczElevatorA +[53] HczElevatorB ```
@@ -282,7 +281,7 @@ sidebar_position: 1
Elevators -```md title="Latest Updated: 8.0.0.0" +```md title="Latest Updated: 8.2.1.0" [0] Unknown [1] GateA [2] GateB @@ -298,7 +297,7 @@ sidebar_position: 1
DamageType -```md title="Latest Updated: 8.0.0.0" +```md title="Latest Updated: 8.2.1.0" [0] Unknown [1] Falldown [2] Warhead @@ -340,6 +339,8 @@ sidebar_position: 1 [38] CardiacArrest [39] Com45 [40] Jailbird +[41] Frmg0 +[42] A7 ```
@@ -375,7 +376,7 @@ PlayerStatsSystem::Scp018DamageHandler : AttackerDamageHandler
Effects -```md title="Latest Updated: 8.0.0.0" +```md title="Latest Updated: 8.2.1.0" [0] AmnesiaItems [1] AmnesiaVision [2] Asphyxiated @@ -421,7 +422,7 @@ PlayerStatsSystem::Scp018DamageHandler : AttackerDamageHandler
Keycard Perms -```md title="Latest Updated: 8.0.0.0" +```md title="Latest Updated: 8.2.1.0" [0] None [1] Checkpoints [2] ExitGates @@ -442,7 +443,7 @@ PlayerStatsSystem::Scp018DamageHandler : AttackerDamageHandler
Lock Type -```md title="Latest Updated: 8.0.0.0" +```md title="Latest Updated: 8.2.1.0" [0] None [1] Regular079 [2] Lockdown079 @@ -477,7 +478,7 @@ PlayerStatsSystem::Scp018DamageHandler : AttackerDamageHandler
Blood -```md title="Latest Updated: 8.0.0.0" +```md title="Latest Updated: 8.2.1.0" [0] Default [1] Scp106 [2] Spreaded @@ -490,7 +491,7 @@ PlayerStatsSystem::Scp018DamageHandler : AttackerDamageHandler
GeneratorState -```md title="Latest Updated: 8.0.0.0" +```md title="Latest Updated: 8.2.1.0" [1] None [2] Unlocked [4] Open @@ -532,7 +533,7 @@ PlayerStatsSystem::Scp018DamageHandler : AttackerDamageHandler
Attachment Names -```md title="Latest Updated: 8.0.0.0" +```md title="Latest Updated: 8.2.1.0" [0] None [1] IronSights [2] DotSight @@ -587,7 +588,7 @@ PlayerStatsSystem::Scp018DamageHandler : AttackerDamageHandler
Spawn Reasons -```md title="Latest Updated: 8.0.0.0" +```md title="Latest Updated: 8.2.1.0" [0] None [1] RoundStart [2] LateJoin