using CommandSystem; using LabApi.Features.Permissions; using LabApi.Features.Wrappers; namespace CustomClasses; [CommandHandler(typeof(RemoteAdminCommandHandler))] [CommandHandler(typeof(ClientCommandHandler))] public class SetCClassCommand : ICommand { public string Command => "setcclass"; public string[] Aliases => ["scc"]; public string Description => "Forces a player to become a specific custom class"; public bool Execute(ArraySegment arguments, ICommandSender sender, out string response) { var executor = Player.Get(sender); if (executor == null) { response = "You must be a player to use this command!"; return false; } if (!executor.HasPermissions("customclasses.setcustomclass")) { response = "You do not have permission to use this command!"; return false; } var args = arguments.Array!; if (arguments.Count < 2) { response = "Usage: setcclass "; return false; } var className = args[arguments.Offset + arguments.Count - 1].ToLower(); var playerName = string.Join(" ", args.Skip(arguments.Offset).Take(arguments.Count - 1)); var player = Player.ReadyList.FirstOrDefault(x => x.Nickname == playerName || x.UserId == playerName || x.NetworkId.ToString() == playerName); if (player == null) { response = $"Player {playerName} not found"; return false; } var manager = CustomClasses.Instance.ClassManager; var success = className switch { "janitor" => manager.ForceSpawn(player, manager.GetConfig(), typeof(JanitorConfig), null), "subject" or "researchsubject" => manager.ForceSpawn(player, manager.GetConfig(), typeof(ResearchSubjectConfig), null), "headguard" => manager.ForceSpawn(player, manager.GetConfig(), typeof(HeadGuardConfig), null), "medic" => manager.ForceSpawn(player, manager.GetConfig(), typeof(MedicConfig), null), "gambler" => manager.ForceSpawn(player, manager.GetConfig(), typeof(GamblerConfig), null), "shadowstepper" => manager.ForceSpawn(player, manager.GetConfig(), typeof(ShadowStepperConfig), null), "demolitionist" => manager.ForceSpawn(player, manager.GetConfig(), typeof(MtfDemolitionistConfig), null), "scout" => manager.ForceSpawn(player, manager.GetConfig(), typeof(ScoutConfig), null), "explosivemaster" => manager.ForceSpawn(player, manager.GetConfig(), typeof(ExplosiveMasterConfig), null), "flashmaster" => manager.ForceSpawn(player, manager.GetConfig(), typeof(FlashMasterConfig), null), "serpentshand" => manager.ForceSpawn(player, manager.GetConfig(), typeof(SerpentsHandConfig), () => SerpentsHandManager.PreSpawn(player)), "negromancer" => manager.ForceSpawn(player, manager.GetConfig(), typeof(NegromancerConfig), null), "bloodfueled" => manager.ForceSpawn(player, manager.GetConfig(), typeof(BloodFueledConfig), null), _ => false }; if (!success) { response = $"Failed to set {playerName} to {className}. Make sure the player has the correct base role for the custom class."; return false; } response = $"Successfully set {playerName} to {className}"; return true; } }