From 6dbbfc0ddee546e2702f8913dd0a8c20d3c0d89d Mon Sep 17 00:00:00 2001 From: admin Date: Sun, 26 Jul 2026 23:43:46 +0200 Subject: [PATCH] feat: add BasePower abstraction --- Cs2SuperPowers.csproj | 14 + Cs2SuperPowersPlugin.cs | 304 ++ Cs2SuperPowersPluginDependencyInjection.cs | 48 + GlobalConfig.cs | 48 + ISuperPower.cs | 17 + PlayerPowers.cs | 42 + Players/Ensure.cs | 26 + Players/IPlayerHud.cs | 8 + Players/IValidation.cs | 6 + Players/PlayerControllerExtensions.cs | 54 + Players/PlayerHud.cs | 61 + Players/PlayerValidations/IsAlive.cs | 20 + Players/PlayerValidations/IsValid.cs | 20 + Powers/AirStrike.cs | 124 + Powers/ArmBreaker.cs | 65 + Powers/Assign/IPowerAssignLogic.cs | 8 + Powers/Assign/RandomAssignLogic.cs | 149 + Powers/BasePower.cs | 110 + Powers/BlindingLight.cs | 156 + Powers/BulletStorm.cs | 57 + Powers/DoubleJump.cs | 127 + Powers/DroppedNades.cs | 110 + Powers/ExplosiveBullets.cs | 70 + Powers/FinalMission.cs | 93 + Powers/FlashKing.cs | 65 + Powers/FlashProof.cs | 75 + Powers/Ghost.cs | 192 ++ Powers/GoFast.cs | 43 + Powers/GrenadeLauncher.cs | 121 + Powers/IAmChicken.cs | 69 + Powers/IronBody.cs | 51 + Powers/IronHead.cs | 52 + Powers/Jetpack.cs | 106 + Powers/NotSoDecoy.cs | 110 + Powers/OneShot.cs | 66 + Powers/PanicTeleport.cs | 123 + Powers/Phoenix.cs | 81 + Powers/PowerThief.cs | 66 + Powers/Rambo.cs | 83 + Powers/RandomTeleport.cs | 70 + Powers/RiseFromTheDead.cs | 59 + Powers/Shield.cs | 114 + Powers/TeleportOnKill.cs | 61 + Powers/Twister.cs | 69 + Powers/Vampire.cs | 63 + Powers/Wallhack.cs | 291 ++ Utils/GrenadeSpawner.cs | 32 + .../net8.0/Cs2SuperPowersPlugin.deps.json | 888 ++++++ .../Debug/net8.0/Cs2SuperPowersPlugin.dll | Bin 0 -> 91648 bytes .../Debug/net8.0/Cs2SuperPowersPlugin.pdb | Bin 0 -> 50348 bytes obj/Cs2SuperPowers.csproj.nuget.dgspec.json | 67 + obj/Cs2SuperPowers.csproj.nuget.g.props | 21 + obj/Cs2SuperPowers.csproj.nuget.g.targets | 10 + ...CoreApp,Version=v8.0.AssemblyAttributes.cs | 4 + .../net8.0/Cs2SuperPowers.AssemblyInfo.cs | 22 + .../Cs2SuperPowers.AssemblyInfoInputs.cache | 1 + ....GeneratedMSBuildEditorConfig.editorconfig | 13 + .../net8.0/Cs2SuperPowers.GlobalUsings.g.cs | 8 + obj/Debug/net8.0/Cs2SuperPowers.assets.cache | Bin 0 -> 28998 bytes ...SuperPowers.csproj.AssemblyReference.cache | Bin 0 -> 19086 bytes ...SuperPowers.csproj.CoreCompileInputs.cache | 1 + ...Cs2SuperPowers.csproj.FileListAbsolute.txt | 13 + .../net8.0/Cs2SuperPowers.sourcelink.json | 1 + obj/Debug/net8.0/Cs2SuperPowersPlugin.dll | Bin 0 -> 59904 bytes obj/Debug/net8.0/Cs2SuperPowersPlugin.pdb | Bin 0 -> 36832 bytes obj/Debug/net8.0/ref/Cs2SuperPowersPlugin.dll | Bin 0 -> 19456 bytes .../net8.0/refint/Cs2SuperPowersPlugin.dll | Bin 0 -> 19456 bytes ...CoreApp,Version=v8.0.AssemblyAttributes.cs | 4 + .../net8.0/Cs2SuperPowers.AssemblyInfo.cs | 22 + .../Cs2SuperPowers.AssemblyInfoInputs.cache | 1 + ....GeneratedMSBuildEditorConfig.editorconfig | 13 + .../net8.0/Cs2SuperPowers.GlobalUsings.g.cs | 8 + .../Debug/net8.0/Cs2SuperPowers.assets.cache | Bin 0 -> 28998 bytes ...SuperPowers.csproj.AssemblyReference.cache | Bin 0 -> 19086 bytes ...SuperPowers.csproj.CoreCompileInputs.cache | 1 + ...Cs2SuperPowers.csproj.FileListAbsolute.txt | 13 + .../net8.0/Cs2SuperPowers.sourcelink.json | 1 + .../Debug/net8.0/Cs2SuperPowersPlugin.dll | Bin 0 -> 91648 bytes .../Debug/net8.0/Cs2SuperPowersPlugin.pdb | Bin 0 -> 50348 bytes .../Debug/net8.0/ref/Cs2SuperPowersPlugin.dll | Bin 0 -> 26624 bytes .../net8.0/refint/Cs2SuperPowersPlugin.dll | Bin 0 -> 26624 bytes obj/project.assets.json | 2619 +++++++++++++++++ obj/project.nuget.cache | 57 + 83 files changed, 7587 insertions(+) create mode 100644 Cs2SuperPowers.csproj create mode 100644 Cs2SuperPowersPlugin.cs create mode 100644 Cs2SuperPowersPluginDependencyInjection.cs create mode 100644 GlobalConfig.cs create mode 100644 ISuperPower.cs create mode 100644 PlayerPowers.cs create mode 100644 Players/Ensure.cs create mode 100644 Players/IPlayerHud.cs create mode 100644 Players/IValidation.cs create mode 100644 Players/PlayerControllerExtensions.cs create mode 100644 Players/PlayerHud.cs create mode 100644 Players/PlayerValidations/IsAlive.cs create mode 100644 Players/PlayerValidations/IsValid.cs create mode 100644 Powers/AirStrike.cs create mode 100644 Powers/ArmBreaker.cs create mode 100644 Powers/Assign/IPowerAssignLogic.cs create mode 100644 Powers/Assign/RandomAssignLogic.cs create mode 100644 Powers/BasePower.cs create mode 100644 Powers/BlindingLight.cs create mode 100644 Powers/BulletStorm.cs create mode 100644 Powers/DoubleJump.cs create mode 100644 Powers/DroppedNades.cs create mode 100644 Powers/ExplosiveBullets.cs create mode 100644 Powers/FinalMission.cs create mode 100644 Powers/FlashKing.cs create mode 100644 Powers/FlashProof.cs create mode 100644 Powers/Ghost.cs create mode 100644 Powers/GoFast.cs create mode 100644 Powers/GrenadeLauncher.cs create mode 100644 Powers/IAmChicken.cs create mode 100644 Powers/IronBody.cs create mode 100644 Powers/IronHead.cs create mode 100644 Powers/Jetpack.cs create mode 100644 Powers/NotSoDecoy.cs create mode 100644 Powers/OneShot.cs create mode 100644 Powers/PanicTeleport.cs create mode 100644 Powers/Phoenix.cs create mode 100644 Powers/PowerThief.cs create mode 100644 Powers/Rambo.cs create mode 100644 Powers/RandomTeleport.cs create mode 100644 Powers/RiseFromTheDead.cs create mode 100644 Powers/Shield.cs create mode 100644 Powers/TeleportOnKill.cs create mode 100644 Powers/Twister.cs create mode 100644 Powers/Vampire.cs create mode 100644 Powers/Wallhack.cs create mode 100644 Utils/GrenadeSpawner.cs create mode 100644 bin/linux/Debug/net8.0/Cs2SuperPowersPlugin.deps.json create mode 100644 bin/linux/Debug/net8.0/Cs2SuperPowersPlugin.dll create mode 100644 bin/linux/Debug/net8.0/Cs2SuperPowersPlugin.pdb create mode 100644 obj/Cs2SuperPowers.csproj.nuget.dgspec.json create mode 100644 obj/Cs2SuperPowers.csproj.nuget.g.props create mode 100644 obj/Cs2SuperPowers.csproj.nuget.g.targets create mode 100644 obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs create mode 100644 obj/Debug/net8.0/Cs2SuperPowers.AssemblyInfo.cs create mode 100644 obj/Debug/net8.0/Cs2SuperPowers.AssemblyInfoInputs.cache create mode 100644 obj/Debug/net8.0/Cs2SuperPowers.GeneratedMSBuildEditorConfig.editorconfig create mode 100644 obj/Debug/net8.0/Cs2SuperPowers.GlobalUsings.g.cs create mode 100644 obj/Debug/net8.0/Cs2SuperPowers.assets.cache create mode 100644 obj/Debug/net8.0/Cs2SuperPowers.csproj.AssemblyReference.cache create mode 100644 obj/Debug/net8.0/Cs2SuperPowers.csproj.CoreCompileInputs.cache create mode 100644 obj/Debug/net8.0/Cs2SuperPowers.csproj.FileListAbsolute.txt create mode 100644 obj/Debug/net8.0/Cs2SuperPowers.sourcelink.json create mode 100644 obj/Debug/net8.0/Cs2SuperPowersPlugin.dll create mode 100644 obj/Debug/net8.0/Cs2SuperPowersPlugin.pdb create mode 100644 obj/Debug/net8.0/ref/Cs2SuperPowersPlugin.dll create mode 100644 obj/Debug/net8.0/refint/Cs2SuperPowersPlugin.dll create mode 100644 obj/linux/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs create mode 100644 obj/linux/Debug/net8.0/Cs2SuperPowers.AssemblyInfo.cs create mode 100644 obj/linux/Debug/net8.0/Cs2SuperPowers.AssemblyInfoInputs.cache create mode 100644 obj/linux/Debug/net8.0/Cs2SuperPowers.GeneratedMSBuildEditorConfig.editorconfig create mode 100644 obj/linux/Debug/net8.0/Cs2SuperPowers.GlobalUsings.g.cs create mode 100644 obj/linux/Debug/net8.0/Cs2SuperPowers.assets.cache create mode 100644 obj/linux/Debug/net8.0/Cs2SuperPowers.csproj.AssemblyReference.cache create mode 100644 obj/linux/Debug/net8.0/Cs2SuperPowers.csproj.CoreCompileInputs.cache create mode 100644 obj/linux/Debug/net8.0/Cs2SuperPowers.csproj.FileListAbsolute.txt create mode 100644 obj/linux/Debug/net8.0/Cs2SuperPowers.sourcelink.json create mode 100644 obj/linux/Debug/net8.0/Cs2SuperPowersPlugin.dll create mode 100644 obj/linux/Debug/net8.0/Cs2SuperPowersPlugin.pdb create mode 100644 obj/linux/Debug/net8.0/ref/Cs2SuperPowersPlugin.dll create mode 100644 obj/linux/Debug/net8.0/refint/Cs2SuperPowersPlugin.dll create mode 100644 obj/project.assets.json create mode 100644 obj/project.nuget.cache diff --git a/Cs2SuperPowers.csproj b/Cs2SuperPowers.csproj new file mode 100644 index 0000000..d8d3409 --- /dev/null +++ b/Cs2SuperPowers.csproj @@ -0,0 +1,14 @@ + + + + net8.0 + enable + enable + Cs2SuperPowersPlugin + + + + + + + diff --git a/Cs2SuperPowersPlugin.cs b/Cs2SuperPowersPlugin.cs new file mode 100644 index 0000000..7913431 --- /dev/null +++ b/Cs2SuperPowersPlugin.cs @@ -0,0 +1,304 @@ +using CounterStrikeSharp.API; +using CounterStrikeSharp.API.Core; +using CounterStrikeSharp.API.Core.Attributes.Registration; +using CounterStrikeSharp.API.Modules.Commands; +using CounterStrikeSharp.API.Modules.Utils; +using Cs2SuperPowers.Players; +using Cs2SuperPowers.Powers; +using Cs2SuperPowers.Powers.Assign; +using Microsoft.Extensions.Logging; + +namespace Cs2SuperPowers; + +public class Cs2SuperPowersPlugin : BasePlugin +{ + public override string ModuleName => "Cs2SuperPowersPlugin"; + public override string ModuleVersion => "0.1.0"; + public override string ModuleAuthor => "Latoch"; + public override string ModuleDescription => "This CS2 server plugin unleashes the divine within! Experience a chaotic and exhilarating gameplay where players wield incredible superpowers."; + + private readonly ISuperPower[] _superPowers; + private readonly IPowerAssignLogic _powerAssignLogic; + private readonly IPlayerHud _playerHud; + private readonly Random _random = new Random(); + + // Store listener delegate to prevent garbage collection! + private readonly Listeners.CheckTransmit _checkTransmitHandler; + + public Cs2SuperPowersPlugin(IEnumerable superPowers, IPowerAssignLogic powerAssignLogic, IPlayerHud playerHud) : base() + { + _superPowers = superPowers.ToArray(); + _powerAssignLogic = powerAssignLogic; + _playerHud = playerHud; + + // Initialize CheckTransmit handler here to store a reference! + _checkTransmitHandler = OnCheckTransmit; + } + + public override void Load(bool hotReload) + { + Logger.LogInformation("Loading {ModuleName} with HotReload = {HotReload}", ModuleName, hotReload); + base.Load(hotReload); + + // Register CheckTransmit listener using stored handler! + RegisterListener(_checkTransmitHandler); + + foreach (var superPower in _superPowers) + { + Logger.LogInformation("Initializing SuperPower {Name} with Id = {Id}", superPower.Name, superPower.Id); + superPower.Initialize(this); + Logger.LogInformation("Finished Initializing SuperPower {Name}", superPower.Name); + } + _playerHud.Initialize(this); + _powerAssignLogic.Initialize(this, _superPowers); + Logger.LogInformation("Finished loading {ModuleName} with HotReload = {HotReload}", ModuleName, hotReload); + } + + public void OnCheckTransmit(CCheckTransmitInfoList infoList) + { + foreach ((CCheckTransmitInfo info, CCSPlayerController? player) in infoList) + { + if (player == null || !player.IsValid) continue; + Wallhack._onPlayerTransmitHandler(info, player); + } + } + + [ConsoleCommand("css_reroll", "Reroll your super power")] + [CommandHelper(minArgs: 0, whoCanExecute: CommandUsage.CLIENT_ONLY)] + public void OnRerollCommand(CCSPlayerController? player, CommandInfo command) + { + if (player == null || !player.IsValid || !player.PawnIsAlive) + { + return; + } + + var activePlayerCount = Utilities.GetPlayers().Count(currentPlayer => + currentPlayer.IsValid && currentPlayer.Team != CsTeam.None && currentPlayer.Team != CsTeam.Spectator); + var randomAssignablePowers = _superPowers + .Where(power => power.CanBeRandomlyAssigned && power.MinimumPlayersRequired <= activePlayerCount) + .ToArray(); + if (randomAssignablePowers.Length == 0) + { + player.PrintToChat("No eligible powers are available right now."); + return; + } + + var randomPower = randomAssignablePowers[_random.Next(randomAssignablePowers.Length)]; + PlayerPowers.Instance.AddPower(player, randomPower, showMessages: true); + } + + [ConsoleCommand("css_forcepower", "Force a super power on a player: /forcepower ")] + [CommandHelper(minArgs: 2, whoCanExecute: CommandUsage.CLIENT_AND_SERVER)] + public void OnForcePowerCommand(CCSPlayerController? caller, CommandInfo command) + { + var playerNameArg = command.GetArg(1); + var powerArg = command.GetArg(2); + + // Find target player + CCSPlayerController? targetPlayer = null; + foreach (var player in Utilities.GetPlayers()) + { + if (player.IsValid && player.PlayerName.Contains(playerNameArg, StringComparison.OrdinalIgnoreCase)) + { + targetPlayer = player; + break; + } + } + + if (targetPlayer == null) + { + command.ReplyToCommand($"Could not find player containing '{playerNameArg}'"); + return; + } + + // Find power + ISuperPower? targetPower = null; + if (int.TryParse(powerArg, out var powerId)) + { + targetPower = _superPowers.FirstOrDefault(p => p.Id == powerId); + } + else + { + targetPower = _superPowers.FirstOrDefault(p => p.Name.Contains(powerArg, StringComparison.OrdinalIgnoreCase)); + } + + if (targetPower == null) + { + command.ReplyToCommand($"Could not find power '{powerArg}'"); + return; + } + + // Assign power + PlayerPowers.Instance.AddPower(targetPlayer, targetPower, showMessages: true); + command.ReplyToCommand($"Gave {targetPlayer.PlayerName} the power '{targetPower.Name}'"); + } + + [ConsoleCommand("css_nodelay", "Turn off cooldowns for Grenade Launcher, Not So Decoy, and Air Strike!")] + [CommandHelper(minArgs: 0, whoCanExecute: CommandUsage.CLIENT_AND_SERVER)] + public void OnNoDelayCommand(CCSPlayerController? caller, CommandInfo command) + { + GlobalConfig.NoDelayEnabled = true; + if (caller != null && caller.IsValid) + { + caller.PrintToChat($"NoDelay mode turned ON! Cooldowns disabled for Grenade Launcher, Not So Decoy, Air Strike!"); + } + else + { + Server.PrintToChatAll($"NoDelay mode turned ON! Cooldowns disabled for Grenade Launcher, Not So Decoy, Air Strike!"); + } + } + + [ConsoleCommand("css_delay", "Turn on cooldowns for Grenade Launcher, Not So Decoy, and Air Strike!")] + [CommandHelper(minArgs: 0, whoCanExecute: CommandUsage.CLIENT_AND_SERVER)] + public void OnDelayCommand(CCSPlayerController? caller, CommandInfo command) + { + GlobalConfig.NoDelayEnabled = false; + if (caller != null && caller.IsValid) + { + caller.PrintToChat($"NoDelay mode turned OFF! Cooldowns re-enabled!"); + } + else + { + Server.PrintToChatAll($"NoDelay mode turned OFF! Cooldowns re-enabled!"); + } + } + + [ConsoleCommand("css_boost", "Shows boost levels for all abilities.")] + [CommandHelper(minArgs: 0, whoCanExecute: CommandUsage.CLIENT_AND_SERVER)] + public void OnBoostCommand(CCSPlayerController? caller, CommandInfo command) + { + string message = $"Boost Levels:\n GrenadeLauncher: {GlobalConfig.GrenadeLauncherBoostLevel} ({GlobalConfig.GetGrenadeLauncherCount(1)}x)\n NotSoDecoy: {GlobalConfig.NotSoDecoyBoostLevel} ({GlobalConfig.GetNotSoDecoyCount(20)} grenades)\n AirStrike: {GlobalConfig.AirStrikeBoostLevel} ({GlobalConfig.GetAirStrikeCount(20)} grenades)\n Dropped Nades: {GlobalConfig.DroppedNadesBoostLevel} ({GlobalConfig.GetDroppedNadesCount(5)} grenades)"; + if (caller != null && caller.IsValid) + { + caller.PrintToChat(message); + } + else + { + Server.PrintToChatAll(message); + } + } + + [ConsoleCommand("css_boost_grenade", "Sets boost level for GrenadeLauncher (0+).")] + [CommandHelper(minArgs: 1, usage: "[level >= 0]", whoCanExecute: CommandUsage.CLIENT_AND_SERVER)] + public void OnBoostGrenadeCommand(CCSPlayerController? caller, CommandInfo command) + { + if (int.TryParse(command.GetArg(1), out int level) && level >= 0) + { + GlobalConfig.GrenadeLauncherBoostLevel = level; + string message = $"GrenadeLauncher Boost Level set to {level} ({GlobalConfig.GetGrenadeLauncherCount(1)}x)!"; + if (caller != null && caller.IsValid) + { + caller.PrintToChat(message); + } + else + { + Server.PrintToChatAll(message); + } + } + else + { + string message = "Invalid level! Use 0 or higher."; + if (caller != null && caller.IsValid) + { + caller.PrintToChat(message); + } + else + { + Server.PrintToChatAll(message); + } + } + } + + [ConsoleCommand("css_boost_decoy", "Sets boost level for NotSoDecoy (0+).")] + [CommandHelper(minArgs: 1, usage: "[level >= 0]", whoCanExecute: CommandUsage.CLIENT_AND_SERVER)] + public void OnBoostDecoyCommand(CCSPlayerController? caller, CommandInfo command) + { + if (int.TryParse(command.GetArg(1), out int level) && level >= 0) + { + GlobalConfig.NotSoDecoyBoostLevel = level; + string message = $"NotSoDecoy Boost Level set to {level} ({GlobalConfig.GetNotSoDecoyCount(20)} grenades)!"; + if (caller != null && caller.IsValid) + { + caller.PrintToChat(message); + } + else + { + Server.PrintToChatAll(message); + } + } + else + { + string message = "Invalid level! Use 0 or higher."; + if (caller != null && caller.IsValid) + { + caller.PrintToChat(message); + } + else + { + Server.PrintToChatAll(message); + } + } + } + + [ConsoleCommand("css_boost_airstrike", "Sets boost level for AirStrike (0+).")] + [CommandHelper(minArgs: 1, usage: "[level >= 0]", whoCanExecute: CommandUsage.CLIENT_AND_SERVER)] + public void OnBoostAirstrikeCommand(CCSPlayerController? caller, CommandInfo command) + { + if (int.TryParse(command.GetArg(1), out int level) && level >= 0) + { + GlobalConfig.AirStrikeBoostLevel = level; + string message = $"AirStrike Boost Level set to {level} ({GlobalConfig.GetAirStrikeCount(20)} grenades)!"; + if (caller != null && caller.IsValid) + { + caller.PrintToChat(message); + } + else + { + Server.PrintToChatAll(message); + } + } + else + { + string message = "Invalid level! Use 0 or higher."; + if (caller != null && caller.IsValid) + { + caller.PrintToChat(message); + } + else + { + Server.PrintToChatAll(message); + } + } + } + + [ConsoleCommand("css_boost_dropped_nades", "Sets boost level for Dropped Nades (0+).")] + [CommandHelper(minArgs: 1, usage: "[level >= 0]", whoCanExecute: CommandUsage.CLIENT_AND_SERVER)] + public void OnBoostDroppedNadesCommand(CCSPlayerController? caller, CommandInfo command) + { + if (int.TryParse(command.GetArg(1), out int level) && level >= 0) + { + GlobalConfig.DroppedNadesBoostLevel = level; + string message = $"Dropped Nades Boost Level set to {level} ({GlobalConfig.GetDroppedNadesCount(5)} grenades)!"; + if (caller != null && caller.IsValid) + { + caller.PrintToChat(message); + } + else + { + Server.PrintToChatAll(message); + } + } + else + { + string message = "Invalid level! Use 0 or higher."; + if (caller != null && caller.IsValid) + { + caller.PrintToChat(message); + } + else + { + Server.PrintToChatAll(message); + } + } + } +} diff --git a/Cs2SuperPowersPluginDependencyInjection.cs b/Cs2SuperPowersPluginDependencyInjection.cs new file mode 100644 index 0000000..0e66bb9 --- /dev/null +++ b/Cs2SuperPowersPluginDependencyInjection.cs @@ -0,0 +1,48 @@ +using CounterStrikeSharp.API.Core; +using Cs2SuperPowers.Players; +using Cs2SuperPowers.Powers; +using Cs2SuperPowers.Powers.Assign; +using Microsoft.Extensions.DependencyInjection; + +namespace Cs2SuperPowers; + +public class Cs2SuperPowersPluginDependencyInjection : IPluginServiceCollection +{ + public void ConfigureServices(IServiceCollection services) + { + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + // mine + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + + services.AddSingleton(); + services.AddSingleton(); + } +} diff --git a/GlobalConfig.cs b/GlobalConfig.cs new file mode 100644 index 0000000..42003fa --- /dev/null +++ b/GlobalConfig.cs @@ -0,0 +1,48 @@ +namespace Cs2SuperPowers; + +public static class GlobalConfig +{ + public static bool NoDelayEnabled { get; set; } = false; + + // Boost levels stack linearly: level 0 = base value, level 1 = 2x, level 2 = 3x, etc. + public static int GrenadeLauncherBoostLevel { get; set; } = 0; + public static int NotSoDecoyBoostLevel { get; set; } = 0; + public static int AirStrikeBoostLevel { get; set; } = 0; + public static int DroppedNadesBoostLevel { get; set; } = 0; + + public static int GetGrenadeLauncherCount(int baseCount) + { + return GetBoostedCount(baseCount, GrenadeLauncherBoostLevel); + } + + public static int GetNotSoDecoyCount(int baseCount) + { + return GetBoostedCount(baseCount, NotSoDecoyBoostLevel); + } + + public static int GetAirStrikeCount(int baseCount) + { + return GetBoostedCount(baseCount, AirStrikeBoostLevel); + } + + public static int GetDroppedNadesCount(int baseCount) + { + return GetBoostedCount(baseCount, DroppedNadesBoostLevel); + } + + private static int GetBoostedCount(int baseCount, int level) + { + if (baseCount <= 0) + { + return 0; + } + + if (level <= 0) + { + return baseCount; + } + + long boostedCount = (long)baseCount * (level + 1L); + return boostedCount > int.MaxValue ? int.MaxValue : (int)boostedCount; + } +} diff --git a/ISuperPower.cs b/ISuperPower.cs new file mode 100644 index 0000000..265fff8 --- /dev/null +++ b/ISuperPower.cs @@ -0,0 +1,17 @@ +using CounterStrikeSharp.API.Core; + +namespace Cs2SuperPowers; + +public interface ISuperPower +{ + int Id { get; } + string Name { get; } + string Description { get; } + char ChatColor { get; } + bool CanBeRandomlyAssigned { get; } + int MinimumPlayersRequired { get; } + + void Initialize(BasePlugin pluginRef); + void AssignToPlayer(CCSPlayerController player, bool showMessages); + void UnassignFromPlayer(CCSPlayerController player); +} diff --git a/PlayerPowers.cs b/PlayerPowers.cs new file mode 100644 index 0000000..a89bdfe --- /dev/null +++ b/PlayerPowers.cs @@ -0,0 +1,42 @@ +using CounterStrikeSharp.API.Core; +using Cs2SuperPowers.Powers; + +namespace Cs2SuperPowers; + +public class PlayerPowers +{ + private static PlayerPowers? _instance; + public static PlayerPowers Instance => _instance ??= new PlayerPowers(); + + private readonly IDictionary _superPowers + = new Dictionary(); + + public void RemovePower(CCSPlayerController player) + { + if (!_superPowers.TryGetValue(player, out var superPower)) return; + + superPower.UnassignFromPlayer(player); + _superPowers.Remove(player); + } + + public void AddPower(CCSPlayerController player, ISuperPower superPower, bool showMessages) + { + if (_superPowers.TryGetValue(player, out var existingSuperPower)) + { + existingSuperPower.UnassignFromPlayer(player); + _superPowers.Remove(player); + }; + + superPower.AssignToPlayer(player, showMessages); + _superPowers.Add(player, superPower); + } + + public bool TryGetValue(CCSPlayerController attacker, out ISuperPower? power) + => _superPowers.TryGetValue(attacker, out power); + + public IEnumerable<(CCSPlayerController Player, ISuperPower Power)> GetAssignedPowers() + => _superPowers.Select(x => (x.Key, x.Value)); + + public IEnumerable GetPlayersWithPower(ISuperPower power) + => GetAssignedPowers().Where(x => x.Power.Id == power.Id).Select(x => x.Player); +} \ No newline at end of file diff --git a/Players/Ensure.cs b/Players/Ensure.cs new file mode 100644 index 0000000..7130524 --- /dev/null +++ b/Players/Ensure.cs @@ -0,0 +1,26 @@ +using CounterStrikeSharp.API.Core; + +namespace Cs2SuperPowers.Players; + +public static class Ensure +{ + public static ValidationBuilder Player(CCSPlayerController? player) + { + return new ValidationBuilder(player); + } +} + +public class ValidationBuilder(TEntity? entity) +{ + private readonly Queue> _validations = new(); + + public void Add(IValidation validation) + { + _validations.Enqueue(validation); + } + + public bool Check() + { + return _validations.All(v => v.Validate(entity)); + } +} \ No newline at end of file diff --git a/Players/IPlayerHud.cs b/Players/IPlayerHud.cs new file mode 100644 index 0000000..a5c820b --- /dev/null +++ b/Players/IPlayerHud.cs @@ -0,0 +1,8 @@ +using CounterStrikeSharp.API.Core; + +namespace Cs2SuperPowers.Players; + +public interface IPlayerHud { + void Initialize(BasePlugin pluginRef); + void ShowMessage(CCSPlayerController player, string message, TimeSpan? duration = null); +} \ No newline at end of file diff --git a/Players/IValidation.cs b/Players/IValidation.cs new file mode 100644 index 0000000..4ea2547 --- /dev/null +++ b/Players/IValidation.cs @@ -0,0 +1,6 @@ +namespace Cs2SuperPowers.Players; + +public interface IValidation +{ + bool Validate(TEntity? entity); +} \ No newline at end of file diff --git a/Players/PlayerControllerExtensions.cs b/Players/PlayerControllerExtensions.cs new file mode 100644 index 0000000..ff52c38 --- /dev/null +++ b/Players/PlayerControllerExtensions.cs @@ -0,0 +1,54 @@ +using CounterStrikeSharp.API; +using CounterStrikeSharp.API.Core; + +namespace Cs2SuperPowers.Players; + +public static class PlayerControllerExtensions +{ + public static CCSPlayerController SetNewHealth(this CCSPlayerController player, int health) + { + var pawn = player.PlayerPawn.Value; + if (pawn == null) return player; + + player.MaxHealth = health; + pawn.MaxHealth = health; + + player.Health = health; + pawn.Health = health; + + Utilities.SetStateChanged(pawn, "CBaseEntity", "m_iHealth"); + return player; + } + + public static CCSPlayerController SetMaxHealth(this CCSPlayerController player, int maxHealth) + { + var pawn = player.PlayerPawn.Value; + if (pawn == null) return player; + + player.MaxHealth = maxHealth; + pawn.MaxHealth = maxHealth; + + player.Health = Math.Min(maxHealth, player.Health); + pawn.Health = Math.Min(maxHealth, pawn.Health);; + + Utilities.SetStateChanged(pawn, "CBaseEntity", "m_iHealth"); + return player; + } + + public static float GetSpeed(this CCSPlayerController player) + { + var pawn = player.PlayerPawn.Value; + if (pawn == null) return 1.0f; + return pawn.VelocityModifier; + } + + public static CCSPlayerController SetNewSpeed(this CCSPlayerController player, float speed) + { + var pawn = player.PlayerPawn.Value; + if (pawn == null) return player; + + pawn.VelocityModifier = speed; + Utilities.SetStateChanged(pawn, "CCSPlayer_MovementServices", "m_flVelocityModifier"); + return player; + } +} \ No newline at end of file diff --git a/Players/PlayerHud.cs b/Players/PlayerHud.cs new file mode 100644 index 0000000..6f776a0 --- /dev/null +++ b/Players/PlayerHud.cs @@ -0,0 +1,61 @@ +using CounterStrikeSharp.API; +using CounterStrikeSharp.API.Core; + +namespace Cs2SuperPowers.Players; + +public class PlayerHud : IPlayerHud +{ + private readonly Dictionary _playerMessages = new(); + private readonly List _registeredDelegates = new(); + + public void Initialize(BasePlugin pluginRef) + { + Listeners.OnTick onTickListener = OnTick; + _registeredDelegates.Add(onTickListener); + pluginRef.RegisterListener(onTickListener); + } + + public void ShowMessage(CCSPlayerController player, string message, TimeSpan? duration = null) + { + duration ??= TimeSpan.FromSeconds(10); + if (_playerMessages.ContainsKey(player)) + { + _playerMessages.Remove(player); + } + _playerMessages.Add(player, new DisposableMessage(message, DateTime.UtcNow.Add(duration.Value))); + } + + private void OnTick() + { + var toRemove = new List(); + + foreach (var playerMessage in _playerMessages.ToList()) + { + if (playerMessage.Value.DisplayUntil >= DateTime.UtcNow) + { + playerMessage.Key.PrintToCenterHtml(playerMessage.Value.Message); + } + else + { + toRemove.Add(playerMessage.Key); + } + } + + foreach (var player in toRemove) + { + Action? wrappedCallback = null; + wrappedCallback = () => + { + _playerMessages.Remove(player); + if (wrappedCallback != null) + { + _registeredDelegates.Remove(wrappedCallback); + } + }; + _registeredDelegates.Add(wrappedCallback); + Server.NextFrame(wrappedCallback); + } + } +} + +record DisposableMessage(string Message, DateTime DisplayUntil); \ No newline at end of file diff --git a/Players/PlayerValidations/IsAlive.cs b/Players/PlayerValidations/IsAlive.cs new file mode 100644 index 0000000..4c455ab --- /dev/null +++ b/Players/PlayerValidations/IsAlive.cs @@ -0,0 +1,20 @@ +using CounterStrikeSharp.API.Core; + +namespace Cs2SuperPowers.Players.PlayerValidations; + +public class IsAlive : IValidation +{ + public bool Validate(CCSPlayerController? player) + { + return player?.PlayerPawn.Value?.LifeState == (byte)LifeState_t.LIFE_ALIVE; + } +} + +public static class IsAliveExtensions +{ + public static ValidationBuilder IsAlive(this ValidationBuilder builder) + { + builder.Add(new IsAlive()); + return builder; + } +} \ No newline at end of file diff --git a/Players/PlayerValidations/IsValid.cs b/Players/PlayerValidations/IsValid.cs new file mode 100644 index 0000000..ea886c0 --- /dev/null +++ b/Players/PlayerValidations/IsValid.cs @@ -0,0 +1,20 @@ +using CounterStrikeSharp.API.Core; + +namespace Cs2SuperPowers.Players.PlayerValidations; + +public class IsValid : IValidation +{ + public bool Validate(CCSPlayerController? player) + { + return player?.IsValid == true; + } +} + +public static class IsValidExtensions +{ + public static ValidationBuilder IsValid(this ValidationBuilder builder) + { + builder.Add(new IsValid()); + return builder; + } +} diff --git a/Powers/AirStrike.cs b/Powers/AirStrike.cs new file mode 100644 index 0000000..01d5563 --- /dev/null +++ b/Powers/AirStrike.cs @@ -0,0 +1,124 @@ +using CounterStrikeSharp.API; +using CounterStrikeSharp.API.Core; +using CounterStrikeSharp.API.Modules.Utils; +using Cs2SuperPowers.Players; +using Cs2SuperPowers.Players.PlayerValidations; +using Cs2SuperPowers.Utils; + +namespace Cs2SuperPowers.Powers; + +public class AirStrike(IPlayerHud playerHud) : BasePower(playerHud) +{ + public override int Id => 21; + public override string Name => "Air Strike"; + + public override string Description => "Decoys thrown by you launch an airstrike (5 second cooldown)."; + + public override char ChatColor => ChatColors.Red; + + public override string HtmlColor => "#FF0000"; + + private readonly Dictionary _lastUse = new(); + + protected override void OnInitialize() + { + RegisterEventHandler(OnRoundStart); + RegisterEventHandler(OnDecoyStarted); + } + + private HookResult OnRoundStart(EventRoundStart @event, GameEventInfo _) + { + _lastUse.Clear(); + + foreach (var player in Utilities.GetPlayers()) + { + if (!Ensure.Player(player).IsValid().IsAlive().Check() || !IsAssignedTo(player!)) + { + continue; + } + + NextFrame(() => + { + player.GiveNamedItem("weapon_decoy"); + }); + } + + return HookResult.Continue; + } + + private HookResult OnDecoyStarted(EventDecoyStarted @event, GameEventInfo _) + { + var player = @event.Userid; + if (!Ensure.Player(player).IsValid().Check() || !IsAssignedTo(player!)) + { + return HookResult.Continue; + } + + // Check cooldown (skip if nodelay is enabled) + var now = DateTime.UtcNow; + DateTime lastUseTime = default; + bool isOnCooldown = !GlobalConfig.NoDelayEnabled && _lastUse.TryGetValue(player!, out lastUseTime) && (now - lastUseTime).TotalSeconds < 5; + + // Always give a new decoy, regardless of cooldown! + player!.GiveNamedItem("weapon_decoy"); + + if (isOnCooldown) + { + double secondsRemaining = Math.Ceiling(5 - (now - lastUseTime).TotalSeconds); + player.PrintToCenterAlert($"Air Strike is on cooldown! {ChatColors.DarkRed}{secondsRemaining}{ChatColors.Default}s remaining"); + return HookResult.Continue; + } + _lastUse[player!] = now; + + var pos = new Vector(@event.X, @event.Y, @event.Z); + + // Airstrike: spawn grenades above the target, spread over an area, falling down + var random = new Random(); + int grenadeCount = GlobalConfig.GetAirStrikeCount(20); + float airstrikeHeight = 800.0f; // Height above the detonation point + float spreadRadius = 300.0f; // How far from the center grenades can land + + for (int i = 0; i < grenadeCount; i++) + { + // Random offset in a circle around the target + double angle = random.NextDouble() * 2 * Math.PI; + double radius = Math.Sqrt(random.NextDouble()) * spreadRadius; // sqrt for uniform distribution + + float offsetX = (float)(Math.Cos(angle) * radius); + float offsetY = (float)(Math.Sin(angle) * radius); + + // Spawn position: above the ground, with random spread + var spawnPos = new Vector( + pos.X + offsetX, + pos.Y + offsetY, + pos.Z + airstrikeHeight + (float)(random.NextDouble() * 100.0 - 50.0) // small vertical variation + ); + + // Angle: straight down, maybe with a little randomization + float pitch = -90f + (float)(random.NextDouble() * 10.0 - 5.0); // -90 is straight down + float yaw = (float)(random.NextDouble() * 360.0); + var ang = new QAngle(pitch, yaw, 0); + + // Velocity: mostly downward, with a little horizontal for realism + float downwardSpeed = (float)(random.NextDouble() * 200.0 + 800.0); // 800-1000 units/sec down + float horizontalSpeed = (float)(random.NextDouble() * 100.0); // up to 100 units/sec sideways + + // Calculate horizontal direction + float horizAngle = (float)(random.NextDouble() * 2 * Math.PI); + var horizontal = new Vector( + (float)Math.Cos(horizAngle) * horizontalSpeed, + (float)Math.Sin(horizAngle) * horizontalSpeed, + 0 + ); + + var velocity = new Vector( + horizontal.X, + horizontal.Y, + -downwardSpeed + ); + + var createdGrenade = GrenadeSpawner.CreateGrenade(spawnPos, ang, velocity, player.PlayerPawn.Value); + } + return HookResult.Continue; + } +} \ No newline at end of file diff --git a/Powers/ArmBreaker.cs b/Powers/ArmBreaker.cs new file mode 100644 index 0000000..13d7873 --- /dev/null +++ b/Powers/ArmBreaker.cs @@ -0,0 +1,65 @@ +using CounterStrikeSharp.API; +using CounterStrikeSharp.API.Core; +using CounterStrikeSharp.API.Modules.Utils; +using Cs2SuperPowers.Players; +using Cs2SuperPowers.Players.PlayerValidations; + +namespace Cs2SuperPowers.Powers; + +public class ArmBreaker(IPlayerHud playerHud) : BasePower(playerHud) +{ + public override int Id => 6; + public override string Name => "Arms Breaker"; + + public override string Description => $"You have 25% chance to disarm victim on hit."; + + public override char ChatColor => ChatColors.LightBlue; + + private readonly Random _random = new(); + + public override string HtmlColor => "#D6E6FF"; + protected override void OnInitialize() + { + RegisterEventHandler(OnPlayerHurt); + } + + private HookResult OnPlayerHurt(EventPlayerHurt @event, GameEventInfo info) + { + var attacker = @event.Attacker; + var victim = @event.Userid; + + if ( + !Ensure.Player(victim).IsValid().IsAlive().Check() || + !Ensure.Player(attacker).IsValid().Check() || + attacker == victim || + !IsAssignedTo(attacker!)) + { + return HookResult.Continue; + } + + // Check for at least 1 player in the opposing team + var attackerTeam = attacker!.Team; + var enemyCount = Utilities.GetPlayers().Count(p => + p.IsValid && p.Team != CsTeam.None && p.Team != CsTeam.Spectator && p.Team != attackerTeam); + if (enemyCount < 1) + { + return HookResult.Continue; + } + + if (_random.NextDouble() <= 0.25) + { + var weaponServices = victim!.PlayerPawn?.Value?.WeaponServices; + if (weaponServices?.MyWeapons == null) return HookResult.Continue; + + foreach (var weapon in weaponServices.MyWeapons) + { + var weaponName = weapon.Value?.DesignerName; + if (weaponName != null && !weaponName.Contains("weapon_knife") && !weaponName.Contains("weapon_c4")) + { + victim.DropActiveWeapon(); + } + } + } + return HookResult.Continue; + } +} \ No newline at end of file diff --git a/Powers/Assign/IPowerAssignLogic.cs b/Powers/Assign/IPowerAssignLogic.cs new file mode 100644 index 0000000..8ff9c05 --- /dev/null +++ b/Powers/Assign/IPowerAssignLogic.cs @@ -0,0 +1,8 @@ +using CounterStrikeSharp.API.Core; + +namespace Cs2SuperPowers.Powers.Assign; + +public interface IPowerAssignLogic +{ + void Initialize(BasePlugin pluginRef, IReadOnlyCollection powers); +} \ No newline at end of file diff --git a/Powers/Assign/RandomAssignLogic.cs b/Powers/Assign/RandomAssignLogic.cs new file mode 100644 index 0000000..0b767d5 --- /dev/null +++ b/Powers/Assign/RandomAssignLogic.cs @@ -0,0 +1,149 @@ +using CounterStrikeSharp.API; +using CounterStrikeSharp.API.Core; +using CounterStrikeSharp.API.Modules.Utils; +using Cs2SuperPowers.Players; +using Cs2SuperPowers.Players.PlayerValidations; + +namespace Cs2SuperPowers.Powers.Assign; + +public class RandomAssignLogic : IPowerAssignLogic +{ + // Configuration for special rounds + private const double SpecialRoundChance = 0.25; + + // Powers that can be assigned during special rounds (everyone gets the same power) + private readonly string[] SpecialRoundPowers = + { + "Go Fast", "Grenade Launcher", "Air Strike", "Not So Decoy", "I Am Chicken!" + }; + + private readonly List _registeredHandlers = new(); + + public void Initialize(BasePlugin pluginRef, IReadOnlyCollection powers) + { + BasePlugin.GameEventHandler disconnectHandler = (@event, _) => + { + var player = @event.Userid; + + if (!Ensure.Player(player).IsValid().Check()) return HookResult.Continue; + PlayerPowers.Instance.RemovePower(player!); + + return HookResult.Continue; + }; + _registeredHandlers.Add(disconnectHandler); + pluginRef.RegisterEventHandler(disconnectHandler); + + + BasePlugin.GameEventHandler roundStartHandler = (_, _) => + { + var gameRules = Utilities + .FindAllEntitiesByDesignerName("cs_gamerules") + .Single() + .As() + .GameRules!; + + if (gameRules.WarmupPeriod) + { + return HookResult.Continue; + } + + var activePlayerCount = Utilities.GetPlayers().Count(player => + player.IsValid && player.Team != CsTeam.None && player.Team != CsTeam.Spectator); + var randomAssignablePowers = powers + .Where(p => p.CanBeRandomlyAssigned && p.MinimumPlayersRequired <= activePlayerCount) + .ToArray(); + if (randomAssignablePowers.Length == 0) + { + return HookResult.Continue; + } + + var random = new Random(); + var isSpecialRound = random.NextDouble() < SpecialRoundChance; + + if (isSpecialRound) + { + // Special round: everyone gets the same power + var specialRoundCandidates = randomAssignablePowers + .Where(p => SpecialRoundPowers.Contains(p.Name)) + .ToArray(); + var specialPower = specialRoundCandidates.Length == 0 + ? null + : specialRoundCandidates[random.Next(specialRoundCandidates.Length)]; + + if (specialPower != null) + { + // Assign the same power to all players (without individual messages) + foreach (var player in Utilities.GetPlayers()) + { + if (player.Team == CsTeam.Spectator || player.Team == CsTeam.None) continue; + PlayerPowers.Instance.AddPower(player!, specialPower, showMessages: false); + } + + // Announce special round to all players + Server.PrintToChatAll($"{ChatColors.Gold}SPECIAL ROUND!{ChatColors.Default}"); + Server.PrintToChatAll($"{ChatColors.Yellow}Everyone has the same power: {ChatColors.Default}{specialPower.ChatColor}{specialPower.Name}{ChatColors.Default}"); + } + else + { + // Fallback to normal assignment if special power not found + foreach (var player in Utilities.GetPlayers()) + { + if (player.Team == CsTeam.Spectator || player.Team == CsTeam.None) continue; + var randomPower = randomAssignablePowers.OrderBy(_ => random.Next()).First(); + PlayerPowers.Instance.AddPower(player!, randomPower, showMessages: true); + } + } + } + else + { + // Normal round: random powers for each player + foreach (var player in Utilities.GetPlayers()) + { + if (player.Team == CsTeam.Spectator || player.Team == CsTeam.None) continue; + var randomPower = randomAssignablePowers.OrderBy(_ => random.Next()).First(); + PlayerPowers.Instance.AddPower(player!, randomPower, showMessages: true); + } + + // Show individual powers to each team + foreach (var player in Utilities.GetPlayers()) + { + var team = player.Team; + + player.PrintToChat($"Your {ChatColors.Blue}Team {ChatColors.Default}powers are:"); + PlayerPowers.Instance + .GetAssignedPowers() + .Where(x => x.Player.Team == team) + .Select(x => { + player.PrintToChat($"{ChatColors.DarkRed} ► {x.Player.PlayerName} {ChatColors.Default}: {x.Power.ChatColor}{x.Power.Name}"); + return x; + }) + .ToList(); + } + } + + return HookResult.Continue; + }; + _registeredHandlers.Add(roundStartHandler); + pluginRef.RegisterEventHandler(roundStartHandler, HookMode.Pre); + + BasePlugin.GameEventHandler deathHandler = (@event, _) => + { + var victim = @event.Userid; + var attacker = @event.Attacker; + + if (victim == null || attacker == null || victim == attacker) return HookResult.Continue; + + if (!PlayerPowers.Instance.TryGetValue(attacker, out var attackerPower)) + { + return HookResult.Continue; + } + + victim.PrintToChat($"You have been killed by {ChatColors.DarkRed}{attacker.PlayerName}{ChatColors.Lime}"); + victim.PrintToChat($"His/her super power was: {attackerPower!.ChatColor}{attackerPower.Name}"); + + return HookResult.Continue; + }; + _registeredHandlers.Add(deathHandler); + pluginRef.RegisterEventHandler(deathHandler); + } +} diff --git a/Powers/BasePower.cs b/Powers/BasePower.cs new file mode 100644 index 0000000..8964e51 --- /dev/null +++ b/Powers/BasePower.cs @@ -0,0 +1,110 @@ +using System.Text; +using CounterStrikeSharp.API; +using CounterStrikeSharp.API.Core; +using CounterStrikeSharp.API.Modules.Events; +using Cs2SuperPowers.Players; + +namespace Cs2SuperPowers.Powers; + +public abstract class BasePower(IPlayerHud playerHud) : ISuperPower +{ + private readonly HashSet _playerIds = new(); + + protected BasePlugin? Plugin { get; private set; } + + public abstract int Id { get; } + public abstract string Name { get; } + public abstract string Description { get; } + public abstract char ChatColor { get; } + public abstract string HtmlColor { get; } + public virtual bool CanBeRandomlyAssigned => true; + public virtual int MinimumPlayersRequired => 0; + + public void Initialize(BasePlugin pluginRef) + { + Plugin = pluginRef; + OnInitialize(); + } + + protected abstract void OnInitialize(); + + public virtual void AssignToPlayer(CCSPlayerController player, bool showMessages) + { + _playerIds.Add(player.SteamID); + + if (showMessages) + { + player.PrintToChat($"You have been granted the power of {ChatColor}{Name}"); + player.PrintToChat(Description); + + var centerMessageBuilder = new StringBuilder(); + centerMessageBuilder.Append("Your superpower:
"); + centerMessageBuilder.Append($"{Name}
"); + centerMessageBuilder.Append($"{Description}
"); + playerHud.ShowMessage(player, centerMessageBuilder.ToString(), TimeSpan.FromSeconds(10)); + } + } + + public virtual void UnassignFromPlayer(CCSPlayerController player) + { + _playerIds.Remove(player.SteamID); + } + + private readonly List _registeredDelegates = new(); + + protected void RegisterEventHandler(BasePlugin.GameEventHandler handler, HookMode hookMode = HookMode.Post) + where T : GameEvent + { + _registeredDelegates.Add(handler); + Plugin!.RegisterEventHandler(handler, hookMode); + } + + protected void RegisterListener(T handler) where T : Delegate + { + _registeredDelegates.Add(handler); + Plugin!.RegisterListener(handler); + } + + protected void AddTimer(float seconds, Action callback, bool repeat = false) + { + if (repeat) + { + _registeredDelegates.Add(callback); + Plugin!.AddTimer(seconds, callback); + } + else + { + Action? wrappedCallback = null; + wrappedCallback = () => + { + callback(); + if (wrappedCallback != null) + { + _registeredDelegates.Remove(wrappedCallback); + } + }; + _registeredDelegates.Add(wrappedCallback); + Plugin!.AddTimer(seconds, wrappedCallback); + } + } + + protected void NextFrame(Action callback) + { + Action? wrappedCallback = null; + wrappedCallback = () => + { + callback(); + if (wrappedCallback != null) + { + _registeredDelegates.Remove(wrappedCallback); + } + }; + _registeredDelegates.Add(wrappedCallback); + Server.NextFrame(wrappedCallback); + } + + protected bool IsAssignedTo(CCSPlayerController player) + { + return _playerIds.Contains(player.SteamID); + } +} diff --git a/Powers/BlindingLight.cs b/Powers/BlindingLight.cs new file mode 100644 index 0000000..7fb9ee3 --- /dev/null +++ b/Powers/BlindingLight.cs @@ -0,0 +1,156 @@ +using CounterStrikeSharp.API; +using CounterStrikeSharp.API.Core; +using CounterStrikeSharp.API.Core.Attributes; +using CounterStrikeSharp.API.Modules.Utils; +using Cs2SuperPowers.Players; +using Cs2SuperPowers.Players.PlayerValidations; +using Microsoft.Extensions.Logging; + +namespace Cs2SuperPowers.Powers; + +public class BlindingLight(IPlayerHud playerHud) : BasePower(playerHud) +{ + public override int Id => 22; + public override string Name => "Blinding Light"; + + public override string Description => $"Inflict a blinding flash of light that disorients enemies. Press E (Use) to activate the power."; + + public override char ChatColor => ChatColors.BlueGrey; + + public override string HtmlColor => "#cdcece"; + + private readonly List _registrations = new(); + + private const int SecondsBetweenActivations = 8; + + public override void AssignToPlayer(CCSPlayerController player, bool showMessages) + { + base.AssignToPlayer(player, showMessages); + if (!_registrations.Any(r => r.Player == player)) + { + _registrations.Add(new BlindingLightInfo(player, DateTime.MinValue)); + } + Plugin!.Logger.LogInformation("BlindingLight assigned to {PlayerName} ({SteamID})", player.PlayerName, player.SteamID); + } + + public override void UnassignFromPlayer(CCSPlayerController player) + { + base.UnassignFromPlayer(player); + var registration = _registrations.FirstOrDefault(r => r.Player == player); + if (registration != null) + { + _registrations.Remove(registration); + } + Plugin!.Logger.LogInformation("BlindingLight unassigned from {PlayerName} ({SteamID})", player.PlayerName, player.SteamID); + } + + protected override void OnInitialize() + { + RegisterListener(OnTick); + RegisterEventHandler(OnRoundStart); + RegisterEventHandler(OnPlayerDeath); + Plugin!.Logger.LogInformation("BlindingLight initialized!"); + } + + private HookResult OnPlayerDeath(EventPlayerDeath @event, GameEventInfo info) + { + var player = @event.Userid; + var registration = _registrations + .FirstOrDefault(r => r.Player == player); + if (registration != null) + { + registration.WasUsePressedLastTick = false; + } + return HookResult.Continue; + } + + private HookResult OnRoundStart(EventRoundStart @event, GameEventInfo info) + { + _registrations.Clear(); + foreach (var player in PlayerPowers.Instance.GetPlayersWithPower(this)) + { + _registrations.Add(new BlindingLightInfo(player, DateTime.MinValue)); + } + Plugin!.Logger.LogInformation("BlindingLight: Round start, registered {Count} players", _registrations.Count); + return HookResult.Continue; + } + + private void OnTick() + { + foreach (var registration in _registrations.ToList()) + { + if (!Ensure.Player(registration.Player).IsValid().Check()) + { + _registrations.Remove(registration); + continue; + } + + var usePressed = registration.Player.Buttons.HasFlag(PlayerButtons.Use); + var canUsePower = (DateTime.UtcNow - registration.LastUse).TotalSeconds > SecondsBetweenActivations; + + if (usePressed && !registration.WasUsePressedLastTick) + { + Plugin!.Logger.LogInformation("BlindingLight: {PlayerName} pressed use! CanUse: {CanUse}", registration.Player.PlayerName, canUsePower); + if (canUsePower) + { + ActivatePower(registration); + } + else + { + var secondsBeforeNextUse = + SecondsBetweenActivations - (int)(DateTime.UtcNow - registration.LastUse).TotalSeconds; + registration.Player + .PrintToCenterAlert($"You need to wait {ChatColors.DarkRed}{secondsBeforeNextUse} {ChatColors.Default}seconds before using the power."); + } + } + + registration.WasUsePressedLastTick = usePressed; + } + } + + private void ActivatePower(BlindingLightInfo registration) + { + // Check for at least 1 player in the opposing team + var playerTeam = registration.Player.Team; + var enemyCount = Utilities.GetPlayers().Count(p => + p.IsValid && p.Team != CsTeam.None && p.Team != CsTeam.Spectator && p.Team != playerTeam); + Plugin!.Logger.LogInformation("BlindingLight: Activating for {PlayerName}, enemy count: {EnemyCount}", registration.Player.PlayerName, enemyCount); + + if (enemyCount < 1) + { + return; + } + + var flashProjectile = Utilities.CreateEntityByName("flashbang_projectile"); + if (flashProjectile == null || !flashProjectile.IsValid) + { + Plugin!.Logger.LogError("BlindingLight: Failed to create flashbang projectile!"); + return; + } + + var player = registration.Player; + var pos = player.PlayerPawn.Value!.AbsOrigin; + pos!.Z += 10; + + flashProjectile.TicksAtZeroVelocity = 100; + flashProjectile.TeamNum = player.TeamNum; + flashProjectile.Teleport(pos, null, new Vector(0, 0, -10)); + flashProjectile.DispatchSpawn(); + flashProjectile.AcceptInput("InitializeSpawnFromWorld", player.PlayerPawn.Value, player.PlayerPawn.Value); + flashProjectile.DetonateTime = 0; + + Plugin!.Logger.LogInformation("BlindingLight: Flashbang created and detonated!"); + registration.UpdateUse(); + } +} + +public record BlindingLightInfo(CCSPlayerController Player, DateTime LastUse) +{ + public DateTime LastUse { get; private set; } = LastUse; + public bool WasUsePressedLastTick { get; set; } = false; + + public void UpdateUse() + { + LastUse = DateTime.UtcNow; + } +} diff --git a/Powers/BulletStorm.cs b/Powers/BulletStorm.cs new file mode 100644 index 0000000..d6cb52b --- /dev/null +++ b/Powers/BulletStorm.cs @@ -0,0 +1,57 @@ +using CounterStrikeSharp.API.Core; +using CounterStrikeSharp.API.Modules.Utils; +using Cs2SuperPowers.Players; +using Cs2SuperPowers.Players.PlayerValidations; + +namespace Cs2SuperPowers.Powers; + +public class BulletStorm(IPlayerHud playerHud) : BasePower(playerHud) +{ + public override int Id => 13; + public override string Name => "Bullet Storm"; + + public override string Description => $"Gain effectively unlimited reserve ammo so you can keep reloading without ever running dry."; + + public override char ChatColor => ChatColors.Olive; + + public override string HtmlColor => "#0000FF"; + + protected override void OnInitialize() + { + RegisterEventHandler(OnWeaponFire); + RegisterEventHandler(OnWeaponReload); + } + + private HookResult OnWeaponFire(EventWeaponFire @event, GameEventInfo info) + { + var player = @event.Userid; + if (!Ensure.Player(player).IsValid().Check() || !IsAssignedTo(player!)) + { + return HookResult.Continue; + } + + RefillReserveAmmo(player!); + return HookResult.Continue; + } + + private HookResult OnWeaponReload(EventWeaponReload @event, GameEventInfo info) + { + var player = @event.Userid; + if (!Ensure.Player(player).IsValid().Check() || !IsAssignedTo(player!)) + { + return HookResult.Continue; + } + + RefillReserveAmmo(player!); + return HookResult.Continue; + } + + private static void RefillReserveAmmo(CCSPlayerController player) + { + var activeWeaponHandle = player.PlayerPawn.Value?.WeaponServices?.ActiveWeapon; + if (activeWeaponHandle?.Value != null) + { + activeWeaponHandle.Value.ReserveAmmo[0] = 999; + } + } +} diff --git a/Powers/DoubleJump.cs b/Powers/DoubleJump.cs new file mode 100644 index 0000000..8109f5c --- /dev/null +++ b/Powers/DoubleJump.cs @@ -0,0 +1,127 @@ +using CounterStrikeSharp.API; +using CounterStrikeSharp.API.Core; +using CounterStrikeSharp.API.Modules.Utils; +using Cs2SuperPowers.Players; +using Cs2SuperPowers.Players.PlayerValidations; + +namespace Cs2SuperPowers.Powers; + +public class DoubleJump(IPlayerHud playerHud) : BasePower(playerHud) +{ + public override int Id => 28; + public override string Name => "Double Jump"; + public override string Description => "Jump again in mid-air! A classic double jump ability."; + public override char ChatColor => ChatColors.Blue; + public override string HtmlColor => "#0000FF"; + + private readonly Dictionary _canDoubleJump = new(); + private readonly Dictionary _wasOnGround = new(); + private readonly Dictionary _requireJumpRelease = new(); + + protected override void OnInitialize() + { + RegisterListener(OnTick); + RegisterEventHandler(OnRoundStart); + RegisterEventHandler(OnPlayerHurt); + } + + private HookResult OnRoundStart(EventRoundStart @event, GameEventInfo _) + { + _canDoubleJump.Clear(); + _wasOnGround.Clear(); + _requireJumpRelease.Clear(); + return HookResult.Continue; + } + + public override void AssignToPlayer(CCSPlayerController player, bool showMessages) + { + base.AssignToPlayer(player, showMessages); + _canDoubleJump[player] = true; + _wasOnGround[player] = true; + _requireJumpRelease[player] = false; + } + + public override void UnassignFromPlayer(CCSPlayerController player) + { + base.UnassignFromPlayer(player); + _canDoubleJump.Remove(player); + _wasOnGround.Remove(player); + _requireJumpRelease.Remove(player); + } + + private void OnTick() + { + foreach (var player in Utilities.GetPlayers()) + { + if (!player.IsValid || !player.PawnIsAlive) + continue; + + if (!IsAssignedTo(player)) + continue; + + var pawn = player.PlayerPawn.Value; + if (pawn == null || !pawn.IsValid) + continue; + + var isOnGround = pawn.GroundEntity.IsValid; + var jumpPressed = player.Buttons.HasFlag(PlayerButtons.Jump); + var wasOnGroundLastTick = _wasOnGround.GetValueOrDefault(player, true); + + if (isOnGround) + { + _canDoubleJump[player] = true; + _requireJumpRelease[player] = false; + } + else if (wasOnGroundLastTick) + { + _canDoubleJump[player] = true; + _requireJumpRelease[player] = jumpPressed; + } + + if (!isOnGround && !jumpPressed) + { + _requireJumpRelease[player] = false; + } + + if (!isOnGround && + jumpPressed && + !_requireJumpRelease.GetValueOrDefault(player, false) && + _canDoubleJump.GetValueOrDefault(player, false)) + { + var velocity = pawn.AbsVelocity; + velocity.Z = Math.Max(velocity.Z, 300.0f); + pawn.Teleport(pawn.AbsOrigin, null, velocity); + _canDoubleJump[player] = false; + _requireJumpRelease[player] = true; + } + + _wasOnGround[player] = isOnGround; + } + } + + private HookResult OnPlayerHurt(EventPlayerHurt @event, GameEventInfo info) + { + var victim = @event.Userid; + if (!Ensure.Player(victim).IsValid().Check() || !IsAssignedTo(victim!)) + { + return HookResult.Continue; + } + + bool isWorldDamage = !Ensure.Player(@event.Attacker).IsValid().Check(); + bool hasNoWeapon = string.IsNullOrEmpty(@event.Weapon); + + if (!isWorldDamage || !hasNoWeapon) + { + return HookResult.Continue; + } + + var pawn = victim!.PlayerPawn.Value; + if (pawn == null || !pawn.IsValid) + { + return HookResult.Continue; + } + + pawn.Health = Math.Min(pawn.MaxHealth, pawn.Health + @event.DmgHealth); + return HookResult.Stop; + } +} diff --git a/Powers/DroppedNades.cs b/Powers/DroppedNades.cs new file mode 100644 index 0000000..f7a12a4 --- /dev/null +++ b/Powers/DroppedNades.cs @@ -0,0 +1,110 @@ +using CounterStrikeSharp.API; +using CounterStrikeSharp.API.Core; +using CounterStrikeSharp.API.Modules.Utils; +using Cs2SuperPowers.Players; +using Cs2SuperPowers.Players.PlayerValidations; + +namespace Cs2SuperPowers.Powers; + +public class DroppedNades(IPlayerHud playerHud) : BasePower(playerHud) +{ + private readonly Dictionary _lastUse = new(); + + public override int Id => 34; + public override string Name => "Dropped Nades"; + public override string Description => "MAG-7 shots drop 5 grenades on the ground. This power is force-only."; + public override char ChatColor => ChatColors.DarkRed; + public override string HtmlColor => "#AA0000"; + public override bool CanBeRandomlyAssigned => false; + + protected override void OnInitialize() + { + RegisterEventHandler(OnRoundStart); + RegisterEventHandler(OnWeaponFire); + } + + private HookResult OnRoundStart(EventRoundStart @event, GameEventInfo info) + { + _lastUse.Clear(); + return HookResult.Continue; + } + + private HookResult OnWeaponFire(EventWeaponFire @event, GameEventInfo info) + { + var controller = @event.Userid; + if (!Ensure.Player(controller).IsValid().Check() || !IsAssignedTo(controller!)) + { + return HookResult.Continue; + } + + var pawn = controller!.PlayerPawn.Value; + var weapon = pawn?.WeaponServices?.ActiveWeapon.Value; + if (pawn == null || !pawn.IsValid || weapon == null || weapon.DesignerName != "weapon_mag7") + { + return HookResult.Continue; + } + + var now = DateTime.UtcNow; + if (!GlobalConfig.NoDelayEnabled && + _lastUse.TryGetValue(controller, out var lastUseTime) && + (now - lastUseTime).TotalSeconds < 0.35) + { + return HookResult.Continue; + } + + _lastUse[controller] = now; + + var origin = pawn.AbsOrigin; + if (origin == null) + { + return HookResult.Continue; + } + + int grenadeCount = GlobalConfig.GetDroppedNadesCount(5); + var random = new Random(); + var viewAngle = pawn.V_angle; + float baseYawRad = viewAngle.Y * MathF.PI / 180f; + var forward = new Vector(MathF.Cos(baseYawRad), MathF.Sin(baseYawRad), 0.0f); + var right = new Vector(-forward.Y, forward.X, 0.0f); + + int droppedGrenades = 0; + int attempts = 0; + int maxAttempts = grenadeCount + 8; + + while (droppedGrenades < grenadeCount && attempts < maxAttempts) + { + int i = attempts; + attempts++; + float lateralOffset = (float)(random.NextDouble() * 18.0 - 9.0); + float forwardOffset = (float)(random.NextDouble() * 12.0 + 16.0); + var spawnPos = new Vector( + origin.X + forward.X * forwardOffset + right.X * lateralOffset, + origin.Y + forward.Y * forwardOffset + right.Y * lateralOffset, + origin.Z + 10.0f + ); + + float yaw = viewAngle.Y + (float)(random.NextDouble() * 16.0 - 8.0); + var angle = new QAngle(8.0f, yaw, 0.0f); + var velocity = new Vector( + forward.X * (float)(random.NextDouble() * 40.0 + 45.0) + right.X * (float)(random.NextDouble() * 16.0 - 8.0), + forward.Y * (float)(random.NextDouble() * 40.0 + 45.0) + right.Y * (float)(random.NextDouble() * 16.0 - 8.0), + (float)(random.NextDouble() * 12.0 + 8.0) + ); + + var grenadeWeapon = controller.GiveNamedItem("weapon_hegrenade"); + if (grenadeWeapon == null || !grenadeWeapon.IsValid) + { + continue; + } + + if (grenadeWeapon.IsHeldByPlayer) + { + continue; + } + + grenadeWeapon.Teleport(spawnPos, angle, velocity); + droppedGrenades++; + } + return HookResult.Continue; + } +} diff --git a/Powers/ExplosiveBullets.cs b/Powers/ExplosiveBullets.cs new file mode 100644 index 0000000..b89c099 --- /dev/null +++ b/Powers/ExplosiveBullets.cs @@ -0,0 +1,70 @@ +using CounterStrikeSharp.API; +using CounterStrikeSharp.API.Core; +using CounterStrikeSharp.API.Modules.Utils; +using Cs2SuperPowers.Players; +using Cs2SuperPowers.Utils; +using Cs2SuperPowers.Players.PlayerValidations; + +namespace Cs2SuperPowers.Powers; + +public class ExplosiveBullets(IPlayerHud playerHud) : BasePower(playerHud) +{ + public override int Id => 30; + public override string Name => "Explosive Bullets"; + public override string Description => "Every bullet hit causes a small explosion."; + public override char ChatColor => ChatColors.Orange; + public override string HtmlColor => "#FF4500"; + + protected override void OnInitialize() + { + RegisterEventHandler(OnPlayerHurt); + } + + private HookResult OnPlayerHurt(EventPlayerHurt @event, GameEventInfo info) + { + var attacker = @event.Attacker; + var victim = @event.Userid; + + if (!Ensure.Player(attacker).IsValid().Check() || + !Ensure.Player(victim).IsValid().Check() || + attacker == victim || + !IsAssignedTo(attacker!)) + { + return HookResult.Continue; + } + + if (string.IsNullOrWhiteSpace(@event.Weapon) || @event.Weapon.Contains("grenade", StringComparison.OrdinalIgnoreCase)) + { + return HookResult.Continue; + } + + var attackerPawn = attacker!.PlayerPawn.Value; + var victimPawn = victim!.PlayerPawn.Value; + if (victimPawn == null || attackerPawn == null) + return HookResult.Continue; + + var pos = victimPawn.AbsOrigin; + if (pos == null) + return HookResult.Continue; + + pos.Z += 20; + + // Create explosion with a small grenade at victim's position + var ang = new QAngle(0, 0, 0); + var velocity = new Vector(0, 0, 0); + + var grenade = GrenadeSpawner.CreateGrenade(pos, ang, velocity, attackerPawn); + + // Detonate it immediately + Server.NextFrame(() => + { + if (grenade != null && grenade.IsValid) + { + grenade.AcceptInput("InitializeSpawnFromWorld", attackerPawn, attackerPawn); + grenade.DetonateTime = 0; + } + }); + + return HookResult.Continue; + } +} diff --git a/Powers/FinalMission.cs b/Powers/FinalMission.cs new file mode 100644 index 0000000..5b2c1a6 --- /dev/null +++ b/Powers/FinalMission.cs @@ -0,0 +1,93 @@ +using CounterStrikeSharp.API; +using CounterStrikeSharp.API.Core; +using CounterStrikeSharp.API.Modules.Utils; +using Cs2SuperPowers.Players; +using Cs2SuperPowers.Players.PlayerValidations; +namespace Cs2SuperPowers.Powers; + +public class FinalMission(IPlayerHud playerHud) : BasePower(playerHud) +{ + public override int Id => 8; + public override string Name => "Final Mission"; + + public override string Description => $"Upon death, unleash a powerful explosion that eliminates all players within a specified radius, turning your sacrifice into a final act of devastation."; + + public override char ChatColor => ChatColors.Purple; + + public override string HtmlColor => "#F5CB42"; + public override int MinimumPlayersRequired => 4; + + private const float ExplosionRadius = 500.0f; + private const int ExplosionDamage = 999; + + protected override void OnInitialize() + { + RegisterEventHandler(OnPlayerDeath); + } + + private HookResult OnPlayerDeath(EventPlayerDeath @event, GameEventInfo info) + { + var player = @event.Userid; + if (!Ensure.Player(player).IsValid().Check() || !IsAssignedTo(player!)) + { + return HookResult.Continue; + } + + // Check for at least 4 valid (non-spectator, non-none) players total + var validPlayerCount = Utilities.GetPlayers().Count(p => + p.IsValid && p.Team != CsTeam.None && p.Team != CsTeam.Spectator); + if (validPlayerCount < 4) + { + return HookResult.Continue; + } + + var playerPawn = player!.PlayerPawn.Value; + var origin = playerPawn?.AbsOrigin; + if (playerPawn == null || origin == null) + { + return HookResult.Continue; + } + + var explosionCenter = new Vector(origin.X, origin.Y, origin.Z); + Server.NextFrame(() => + { + foreach (var target in Utilities.GetPlayers()) + { + if (!Ensure.Player(target).IsValid().IsAlive().Check()) + { + continue; + } + + var targetPawn = target.PlayerPawn.Value; + var targetOrigin = targetPawn?.AbsOrigin; + if (targetPawn == null || targetOrigin == null) + { + continue; + } + + var deltaX = targetOrigin.X - explosionCenter.X; + var deltaY = targetOrigin.Y - explosionCenter.Y; + var deltaZ = targetOrigin.Z - explosionCenter.Z; + var distanceSquared = deltaX * deltaX + deltaY * deltaY + deltaZ * deltaZ; + if (distanceSquared > ExplosionRadius * ExplosionRadius) + { + continue; + } + + targetPawn.Health = Math.Max(0, targetPawn.Health - ExplosionDamage); + Utilities.SetStateChanged(targetPawn, "CBaseEntity", "m_iHealth"); + } + }); + + Server.PrintToChatAll($"{ChatColors.DarkRed}► {ChatColors.Green} {player.PlayerName}: {ChatColors.Lime}explodes!!!"); + + var fileNames = new[] { "radiobotfallback01", "radiobotfallback02", "radiobotfallback04" }; + AddTimer(0.1f, () => + { + var randomFile = fileNames[new Random().Next(fileNames.Length)]; + player.ExecuteClientCommand($"play vo/agents/balkan/{randomFile}.vsnd"); + }); + + return HookResult.Continue; + } +} diff --git a/Powers/FlashKing.cs b/Powers/FlashKing.cs new file mode 100644 index 0000000..7753818 --- /dev/null +++ b/Powers/FlashKing.cs @@ -0,0 +1,65 @@ +using CounterStrikeSharp.API; +using CounterStrikeSharp.API.Core; +using CounterStrikeSharp.API.Modules.Utils; +using Cs2SuperPowers.Players; +using Cs2SuperPowers.Players.PlayerValidations; + +namespace Cs2SuperPowers.Powers; + +public class FlashKing(IPlayerHud playerHud) : BasePower(playerHud) +{ + public override int Id => 17; + public override string Name => "Flash King"; + + public override string Description => $"With this superpower, your flashbangs blind enemies for three times as long."; + + public override char ChatColor => ChatColors.LightBlue; + + public override string HtmlColor => "#D6E6FF"; + + + protected override void OnInitialize() + { + RegisterEventHandler(OnRoundStart); + RegisterEventHandler(OnPlayerBlinded); + } + + private HookResult OnRoundStart(EventRoundStart @event, GameEventInfo _) + { + foreach (var player in Utilities.GetPlayers()) + { + if (!Ensure.Player(player).IsValid().IsAlive().Check() || !IsAssignedTo(player!)) + { + continue; + } + + NextFrame(() => + { + player.GiveNamedItem("weapon_flashbang"); + player.GiveNamedItem("weapon_flashbang"); + }); + } + + return HookResult.Continue; + } + + private HookResult OnPlayerBlinded(EventPlayerBlind @event, GameEventInfo info) + { + var victim = @event.Userid; + var attacker = @event.Attacker; + + if (!Ensure.Player(victim).IsValid().Check() || !IsAssignedTo(attacker!)) + { + return HookResult.Continue; + } + + var playerPawn = victim!.PlayerPawn.Value; + + if (attacker != victim && attacker!.TeamNum != playerPawn!.TeamNum) + { + playerPawn!.FlashDuration = playerPawn!.FlashDuration * 3; + } + + return HookResult.Continue; + } +} \ No newline at end of file diff --git a/Powers/FlashProof.cs b/Powers/FlashProof.cs new file mode 100644 index 0000000..037ea24 --- /dev/null +++ b/Powers/FlashProof.cs @@ -0,0 +1,75 @@ +using CounterStrikeSharp.API; +using CounterStrikeSharp.API.Core; +using CounterStrikeSharp.API.Modules.Utils; +using Cs2SuperPowers.Players; +using Cs2SuperPowers.Players.PlayerValidations; + +namespace Cs2SuperPowers.Powers; + +public class FlashProof(IPlayerHud playerHud) : BasePower(playerHud) +{ + public override int Id => 3; + public override string Name => "Flash Proof"; + + public override string Description => $"You cannot be blind by flashes. You will gain new flash every time your flash explodes."; + + public override char ChatColor => ChatColors.LightBlue; + + public override string HtmlColor => "#D6E6FF"; + + + protected override void OnInitialize() + { + RegisterEventHandler(OnRoundStart); + RegisterEventHandler(OnPlayerBlinded); + RegisterEventHandler(OnFlashbangDetonate); + } + + private HookResult OnRoundStart(EventRoundStart @event, GameEventInfo _) + { + foreach (var player in Utilities.GetPlayers()) + { + if (!Ensure.Player(player).IsValid().IsAlive().Check() || !IsAssignedTo(player!)) + { + continue; + } + + NextFrame(() => + { + player.GiveNamedItem("weapon_flashbang"); + player.GiveNamedItem("weapon_flashbang"); + }); + } + + return HookResult.Continue; + } + + private HookResult OnPlayerBlinded(EventPlayerBlind @event, GameEventInfo info) + { + var player = @event.Userid; + + if (!Ensure.Player(player).IsValid().Check() || !IsAssignedTo(player!)) + { + return HookResult.Continue; + } + + var playerPawn = player!.PlayerPawn.Value; + playerPawn!.FlashDuration = 0.0f; + + return HookResult.Continue; + } + + private HookResult OnFlashbangDetonate(EventFlashbangDetonate @event, GameEventInfo info) + { + var player = @event.Userid; + + if (!Ensure.Player(player).IsValid().IsAlive().Check() || !IsAssignedTo(player!)) + { + return HookResult.Continue; + } + + player!.GiveNamedItem("weapon_flashbang"); + + return HookResult.Continue; + } +} \ No newline at end of file diff --git a/Powers/Ghost.cs b/Powers/Ghost.cs new file mode 100644 index 0000000..e6ee855 --- /dev/null +++ b/Powers/Ghost.cs @@ -0,0 +1,192 @@ +using System.Drawing; +using CounterStrikeSharp.API; +using CounterStrikeSharp.API.Core; +using CounterStrikeSharp.API.Modules.Utils; +using Cs2SuperPowers.Players; +using Cs2SuperPowers.Players.PlayerValidations; + +namespace Cs2SuperPowers.Powers; + +public class Ghost(IPlayerHud playerHud) : BasePower(playerHud) +{ + public override int Id => 7; + public override string Name => "The Ghost"; + + public override string Description => $"You are invisible to other players - but will show up for few seconds after you will take/give damage."; + + public override char ChatColor => ChatColors.White; + + private readonly Random _random = new Random(); + + public override string HtmlColor => "#FFFFFF"; + public override int MinimumPlayersRequired => 4; + + private readonly Dictionary _visibilityTokens = new(); + + protected override void OnInitialize() + { + RegisterEventHandler(OnRoundStart); + RegisterEventHandler(OnPlayerHurt); + RegisterEventHandler(OnRoundEnd); + } + + private HookResult OnRoundEnd(EventRoundEnd @event, GameEventInfo info) + { + foreach (var player in PlayerPowers.Instance.GetPlayersWithPower(this)) + { + _visibilityTokens[player.SteamID] = _visibilityTokens.GetValueOrDefault(player.SteamID) + 1; + NextFrame(() => + { + SetPlayerVisibility(player, true); + }); + } + + return HookResult.Continue; + } + + private HookResult OnRoundStart(EventRoundStart @event, GameEventInfo info) + { + var validPlayersWithPower = PlayerPowers.Instance + .GetPlayersWithPower(this) + .Where(player => Ensure.Player(player).IsValid().Check()); + + foreach (var player in validPlayersWithPower) + { + NextFrame(() => + { + SetPlayerVisibility(player, false); + }); + } + + return HookResult.Continue; + } + + public override void UnassignFromPlayer(CCSPlayerController player) + { + base.UnassignFromPlayer(player); + NextFrame(() => + { + SetPlayerVisibility(player, true); + }); + } + + private HookResult OnPlayerHurt(EventPlayerHurt @event, GameEventInfo info) + { + var attacker = @event.Attacker; + var victim = @event.Userid; + + if (!Ensure.Player(victim).IsValid().IsAlive().Check() || + !Ensure.Player(attacker).IsValid().Check()) + { + return HookResult.Continue; + } + + // Check for at least 4 valid (non-spectator, non-none) players total + var validPlayerCount = Utilities.GetPlayers().Count(p => + p.IsValid && p.Team != CsTeam.None && p.Team != CsTeam.Spectator); + if (validPlayerCount < 4) + { + return HookResult.Continue; + } + + if (IsAssignedTo(victim!)) + { + RevealGhostTemporarily(victim!); + } + else if (IsAssignedTo(attacker!)) + { + RevealGhostTemporarily(attacker!); + } + + return HookResult.Continue; + } + + private void RevealGhostTemporarily(CCSPlayerController player) + { + if (!Ensure.Player(player).IsValid().IsAlive().Check()) + { + return; + } + + var token = _visibilityTokens.GetValueOrDefault(player.SteamID) + 1; + _visibilityTokens[player.SteamID] = token; + SetPlayerVisibility(player, true); + + AddTimer(_random.Next(1, 5), () => + { + if (!IsAssignedTo(player) || _visibilityTokens.GetValueOrDefault(player.SteamID) != token) + { + return; + } + + SetPlayerVisibility(player, false); + }); + } + + private void SetPlayerVisibility(CCSPlayerController player, bool visible) + { + if (!IsAssignedTo(player) && !visible) + { + return; + } + + var playerPawn = player.PlayerPawn.Value; + if (playerPawn != null) + { + var color = visible + ? Color.FromArgb(255, 255, 255, 255) + : Color.FromArgb(0, 255, 255, 255); + var shadowStrength = visible ? 1.0f : 0.0f; + + playerPawn.Render = color; + playerPawn.ShadowStrength = shadowStrength; + Utilities.SetStateChanged(playerPawn, "CBaseModelEntity", "m_clrRender"); + + var activeWeapon = playerPawn.WeaponServices?.ActiveWeapon.Value; + if (activeWeapon != null && activeWeapon.IsValid) + { + activeWeapon.Render = color; + activeWeapon.ShadowStrength = shadowStrength; + Utilities.SetStateChanged(activeWeapon, "CBaseModelEntity", "m_clrRender"); + } + + var skeleton = playerPawn.CBodyComponent?.SceneNode?.GetSkeletonInstance(); + if (skeleton != null) + { + skeleton.MaterialGroup.Value = visible ? (uint)0 : 1; + } + + var myWeapons = playerPawn.WeaponServices?.MyWeapons; + if (myWeapons != null) + { + foreach (var gun in myWeapons) + { + var weapon = gun.Value; + if (weapon != null) + { + weapon.Render = color; + weapon.ShadowStrength = shadowStrength; + Utilities.SetStateChanged(weapon, "CBaseModelEntity", "m_clrRender"); + } + } + } + + var myWearables = playerPawn.MyWearables; + if (myWearables != null) + { + foreach (var wearableHandle in myWearables) + { + var wearable = wearableHandle.Value; + if (wearable == null || !wearable.IsValid) + { + continue; + } + + wearable.Render = color; + wearable.ShadowStrength = shadowStrength; + Utilities.SetStateChanged(wearable, "CBaseModelEntity", "m_clrRender"); + } + } + } + } +} diff --git a/Powers/GoFast.cs b/Powers/GoFast.cs new file mode 100644 index 0000000..5df5e4d --- /dev/null +++ b/Powers/GoFast.cs @@ -0,0 +1,43 @@ +using CounterStrikeSharp.API; +using CounterStrikeSharp.API.Core; +using CounterStrikeSharp.API.Modules.Utils; +using Cs2SuperPowers.Players; +using Cs2SuperPowers.Players.PlayerValidations; + +namespace Cs2SuperPowers.Powers; + +public class GoFast(IPlayerHud playerHud) : BasePower(playerHud) +{ + public override int Id => 19; + public override string Name => "Go Fast"; + + public override string Description => $"Your movement speed is increased by 50%"; + + public override char ChatColor => ChatColors.Green; + + public override string HtmlColor => "#009905"; + + protected override void OnInitialize() + { + RegisterEventHandler(OnRoundStart); + } + + private HookResult OnRoundStart(EventRoundStart @event, GameEventInfo _) + { + foreach (var player in PlayerPowers.Instance.GetPlayersWithPower(this)) + { + if (!Ensure.Player(player).IsValid().Check()) + { + continue; + } + + NextFrame(() => + { + player.SetNewSpeed(player.GetSpeed() * 1.5f); + player.GravityScale += 5; + }); + } + + return HookResult.Continue; + } +} \ No newline at end of file diff --git a/Powers/GrenadeLauncher.cs b/Powers/GrenadeLauncher.cs new file mode 100644 index 0000000..295df0e --- /dev/null +++ b/Powers/GrenadeLauncher.cs @@ -0,0 +1,121 @@ +using CounterStrikeSharp.API; +using CounterStrikeSharp.API.Core; +using CounterStrikeSharp.API.Modules.Utils; +using Cs2SuperPowers.Players; +using Cs2SuperPowers.Players.PlayerValidations; +using Cs2SuperPowers.Utils; + +namespace Cs2SuperPowers.Powers; + +public class GrenadeLauncher(IPlayerHud playerHud) : BasePower(playerHud) +{ + public override int Id => 11; + public override string Name => "Grenade Launcher"; + + public override string Description => "Every shot from your pistol launches a grenade (0.5s cooldown)."; + + public override char ChatColor => ChatColors.Red; + + public override string HtmlColor => "#FF0000"; + + private readonly Dictionary _lastUse = new(); + + protected override void OnInitialize() + { + RegisterEventHandler(OnRoundStart); + RegisterEventHandler(OnWeaponFire); + } + + private HookResult OnRoundStart(EventRoundStart @event, GameEventInfo _) + { + _lastUse.Clear(); + return HookResult.Continue; + } + + private HookResult OnWeaponFire(EventWeaponFire @event, GameEventInfo info) + { + var controller = @event.Userid; + if (!Ensure.Player(controller).IsValid().Check() || !IsAssignedTo(controller!)) + return HookResult.Continue; + + // Only pistols + var weapon = controller!.PlayerPawn.Value?.WeaponServices?.ActiveWeapon.Value; + if (weapon == null) + return HookResult.Continue; + + // List of pistol weapon names (classnames) + var pistolClassNames = new[] + { + "weapon_glock", "weapon_usp_silencer", "weapon_hkp2000", "weapon_p250", + "weapon_fiveseven", "weapon_tec9", "weapon_cz75a", "weapon_deagle", + "weapon_revolver", "weapon_elite" + }; + + if (!pistolClassNames.Contains(weapon.DesignerName)) + return HookResult.Continue; + + // Check cooldown (skip if nodelay is enabled) + var now = DateTime.UtcNow; + if (!GlobalConfig.NoDelayEnabled && _lastUse.TryGetValue(controller!, out var lastUseTime) && (now - lastUseTime).TotalSeconds < 0.5) + return HookResult.Continue; + _lastUse[controller!] = now; + + var pawn = controller!.PlayerPawn.Value; + if (pawn == null || !pawn.IsValid) + return HookResult.Continue; + + var pos = pawn.AbsOrigin; + if (pos == null) return HookResult.Continue; + pos = new Vector(pos.X, pos.Y, pos.Z + 64f); + + // Forward vector from the player's view angles + var ang = pawn.V_angle; + float yaw = ang.Y * MathF.PI / 180f; + float pitch = ang.X * MathF.PI / 180f; + var forward = new Vector( + MathF.Cos(yaw) * MathF.Cos(pitch), + MathF.Sin(yaw) * MathF.Cos(pitch), + -MathF.Sin(pitch) + ); + + // Spawn farther in front of the player so the grenade does not collide with the shooter. + const float spawnAhead = 72f; + pos = new Vector( + pos.X + forward.X * spawnAhead, + pos.Y + forward.Y * spawnAhead, + pos.Z + forward.Z * 24f + ); + + const float speed = 1100f; + + int grenadeCount = GlobalConfig.GetGrenadeLauncherCount(1); + for (int i = 0; i < grenadeCount; i++) + { + // Add slight random spread for multiple grenades + var random = new Random(); + var spreadAng = new QAngle( + ang.X + (float)(random.NextDouble() * 10.0 - 5.0), // ±5° pitch + ang.Y + (float)(random.NextDouble() * 10.0 - 5.0), // ±5° yaw + ang.Z + ); + + float spreadYaw = spreadAng.Y * MathF.PI / 180f; + float spreadPitch = spreadAng.X * MathF.PI / 180f; + var spreadForward = new Vector( + MathF.Cos(spreadYaw) * MathF.Cos(spreadPitch), + MathF.Sin(spreadYaw) * MathF.Cos(spreadPitch), + -MathF.Sin(spreadPitch) + ); + + var velocity = new Vector( + spreadForward.X * speed, + spreadForward.Y * speed, + spreadForward.Z * speed + 100f + ); + + GrenadeSpawner.CreateGrenade(pos, spreadAng, velocity, pawn); + } + + return HookResult.Continue; + } +} diff --git a/Powers/IAmChicken.cs b/Powers/IAmChicken.cs new file mode 100644 index 0000000..7b85211 --- /dev/null +++ b/Powers/IAmChicken.cs @@ -0,0 +1,69 @@ +using System.Drawing; +using CounterStrikeSharp.API; +using CounterStrikeSharp.API.Core; +using CounterStrikeSharp.API.Modules.Utils; +using Cs2SuperPowers.Players; +using Cs2SuperPowers.Players.PlayerValidations; + +namespace Cs2SuperPowers.Powers; + +public class IAmChicken(IPlayerHud playerHud) : BasePower(playerHud) +{ + public override int Id => 10; + public override string Name => "I Am Chicken!"; + + public override string Description => $"You become Chicken! You're harder to hit but have 30% of HP."; + + public override char ChatColor => ChatColors.Orange; + + public override string HtmlColor => "#FF8B42"; + + protected override void OnInitialize() + { + RegisterEventHandler(OnRoundStart); + } + + private HookResult OnRoundStart(EventRoundStart @event, GameEventInfo info) + { + var random = new Random(); + foreach (var player in PlayerPowers.Instance.GetPlayersWithPower(this)) + { + if (!Ensure.Player(player).IsValid().Check()) + { + continue; + } + + var playerPawn = player.PlayerPawn?.Value; + if (playerPawn == null) + { + continue; + } + + NextFrame(() => + { + SetPlayerModel(player, "models/chicken/chicken.vmdl"); + playerPawn!.CBodyComponent!.SceneNode!.GetSkeletonInstance().MaterialGroup.Value = + (uint)random.Next(1, 4); + + playerPawn.MaxHealth = 30; + playerPawn.Health = 30; + Utilities.SetStateChanged(player, "CCSPlayerPawn", "m_iMaxHealth"); + }); + } + + return HookResult.Continue; + } + + private void SetPlayerModel(CCSPlayerController player, string model) + { + var pawn = player.PlayerPawn?.Value; + if (pawn == null) return; + + NextFrame(() => + { + pawn.SetModel(model); + var originalRender = pawn.Render; + pawn.Render = Color.FromArgb(255, originalRender.R, originalRender.G, originalRender.B); + }); + } +} \ No newline at end of file diff --git a/Powers/IronBody.cs b/Powers/IronBody.cs new file mode 100644 index 0000000..f4dde9f --- /dev/null +++ b/Powers/IronBody.cs @@ -0,0 +1,51 @@ +using CounterStrikeSharp.API.Core; +using CounterStrikeSharp.API.Modules.Utils; +using Cs2SuperPowers.Players; +using Cs2SuperPowers.Players.PlayerValidations; + +namespace Cs2SuperPowers.Powers; + +public class IronBody(IPlayerHud playerHud) : BasePower(playerHud) +{ + public override int Id => 18; + public override string Name => "Iron Body"; + + public override string Description => $"You can only be killed by headshots."; + + public override char ChatColor => ChatColors.LightPurple; + + public override string HtmlColor => "#8B4513"; + + protected override void OnInitialize() + { + RegisterEventHandler(OnPlayerHurt); + } + + private HookResult OnPlayerHurt(EventPlayerHurt @event, GameEventInfo info) + { + var attacker = @event.Attacker; + var victim = @event.Userid; + if (@event.Hitgroup == (int)HitGroup_t.HITGROUP_HEAD) + { + return HookResult.Continue; + } + + if ( + !Ensure.Player(victim).IsValid().Check() || + !Ensure.Player(attacker).IsValid().Check() || + attacker == victim || + !IsAssignedTo(victim!)) + { + return HookResult.Continue; + } + + var playerPawn = victim!.PlayerPawn.Value; + var newHealth = playerPawn!.Health + @event.DmgHealth; + + if (newHealth > 100) + newHealth = 100; + + playerPawn.Health = newHealth; + return HookResult.Stop; + } +} diff --git a/Powers/IronHead.cs b/Powers/IronHead.cs new file mode 100644 index 0000000..d7c9a77 --- /dev/null +++ b/Powers/IronHead.cs @@ -0,0 +1,52 @@ +using CounterStrikeSharp.API; +using CounterStrikeSharp.API.Core; +using CounterStrikeSharp.API.Modules.Utils; +using Cs2SuperPowers.Players; +using Cs2SuperPowers.Players.PlayerValidations; + +namespace Cs2SuperPowers.Powers; + +public class IronHead(IPlayerHud playerHud) : BasePower(playerHud) +{ + public override int Id => 4; + public override string Name => "Iron Head"; + + public override string Description => $"You cannot be killed by head shots."; + + public override char ChatColor => ChatColors.LightPurple; + + public override string HtmlColor => "#8B4513"; + + protected override void OnInitialize() + { + RegisterEventHandler(OnPlayerHurt); + } + + private HookResult OnPlayerHurt(EventPlayerHurt @event, GameEventInfo info) + { + var attacker = @event.Attacker; + var victim = @event.Userid; + if (@event.Hitgroup != (int)HitGroup_t.HITGROUP_HEAD) + { + return HookResult.Continue; + } + + if ( + !Ensure.Player(victim).IsValid().Check() || + !Ensure.Player(attacker).IsValid().Check() || + attacker == victim || + !IsAssignedTo(victim!)) + { + return HookResult.Continue; + } + + var playerPawn = victim!.PlayerPawn.Value; + var newHealth = playerPawn!.Health + @event.DmgHealth; + + if (newHealth > 100) + newHealth = 100; + + playerPawn.Health = newHealth; + return HookResult.Stop; + } +} diff --git a/Powers/Jetpack.cs b/Powers/Jetpack.cs new file mode 100644 index 0000000..5d87bd2 --- /dev/null +++ b/Powers/Jetpack.cs @@ -0,0 +1,106 @@ +using CounterStrikeSharp.API; +using CounterStrikeSharp.API.Core; +using CounterStrikeSharp.API.Modules.Utils; +using Cs2SuperPowers.Players; + +namespace Cs2SuperPowers.Powers; + +public class Jetpack(IPlayerHud playerHud) : BasePower(playerHud) +{ + private const float MaxFuel = 180.0f; + private const float FuelBurnPerTick = 0.8f; + private const float FuelRechargePerTick = 0.9f; + private const float LiftPerTick = 14.0f; + private const float MaxVerticalSpeed = 260.0f; + private static readonly TimeSpan HudRefreshInterval = TimeSpan.FromMilliseconds(125); + + public override int Id => 33; + public override string Name => "Jetpack"; + public override string Description => "Hold Jump (Space) to fly with a fuel-based jetpack."; + public override char ChatColor => ChatColors.Orange; + public override string HtmlColor => "#FF8C00"; + + private readonly Dictionary _fuelByPlayer = new(); + private readonly Dictionary _lastHudUpdate = new(); + + protected override void OnInitialize() + { + RegisterListener(OnTick); + RegisterEventHandler(OnRoundStart); + } + + private HookResult OnRoundStart(EventRoundStart @event, GameEventInfo info) + { + _fuelByPlayer.Clear(); + _lastHudUpdate.Clear(); + return HookResult.Continue; + } + + public override void AssignToPlayer(CCSPlayerController player, bool showMessages) + { + base.AssignToPlayer(player, showMessages); + _fuelByPlayer[player] = MaxFuel; + _lastHudUpdate.Remove(player); + } + + public override void UnassignFromPlayer(CCSPlayerController player) + { + base.UnassignFromPlayer(player); + _fuelByPlayer.Remove(player); + _lastHudUpdate.Remove(player); + } + + private void OnTick() + { + foreach (var player in Utilities.GetPlayers()) + { + if (!player.IsValid || !player.PawnIsAlive) + continue; + + if (!IsAssignedTo(player)) + continue; + + var pawn = player.PlayerPawn.Value; + if (pawn == null || !pawn.IsValid) + continue; + + float fuel = _fuelByPlayer.GetValueOrDefault(player, MaxFuel); + bool isJumpPressed = player.Buttons.HasFlag(PlayerButtons.Jump); + + if (isJumpPressed && fuel > 0.0f) + { + var currentVelocity = pawn.AbsVelocity; + currentVelocity.Z = Math.Min(currentVelocity.Z + LiftPerTick, MaxVerticalSpeed); + pawn.Teleport(pawn.AbsOrigin, null, currentVelocity); + fuel = Math.Max(0.0f, fuel - FuelBurnPerTick); + } + else + { + fuel = Math.Min(MaxFuel, fuel + FuelRechargePerTick); + } + + _fuelByPlayer[player] = fuel; + + if (isJumpPressed) + { + var now = DateTime.UtcNow; + if (!_lastHudUpdate.TryGetValue(player, out var lastHudUpdate) || + now - lastHudUpdate >= HudRefreshInterval) + { + _lastHudUpdate[player] = now; + player.PrintToCenterHtml(BuildFuelMessage(fuel)); + } + } + } + } + + private static string BuildFuelMessage(float fuel) + { + int percent = (int)MathF.Round((fuel / MaxFuel) * 100.0f); + int filledBars = (int)MathF.Round((fuel / MaxFuel) * 10.0f); + filledBars = Math.Clamp(filledBars, 0, 10); + string bar = new string('|', filledBars).PadRight(10, '.'); + string color = percent > 60 ? "#4CAF50" : percent > 30 ? "#FFC107" : "#F44336"; + return $"Jetpack Fuel: {percent}%
{bar}"; + } +} diff --git a/Powers/NotSoDecoy.cs b/Powers/NotSoDecoy.cs new file mode 100644 index 0000000..719590f --- /dev/null +++ b/Powers/NotSoDecoy.cs @@ -0,0 +1,110 @@ +using CounterStrikeSharp.API; +using CounterStrikeSharp.API.Core; +using CounterStrikeSharp.API.Modules.Utils; +using Cs2SuperPowers.Players; +using Cs2SuperPowers.Players.PlayerValidations; +using Cs2SuperPowers.Utils; + +namespace Cs2SuperPowers.Powers; + +public class NotSoDecoy(IPlayerHud playerHud) : BasePower(playerHud) +{ + public override int Id => 24; + public override string Name => "Not So Decoy"; + + public override string Description => "Decoys thrown by you spawn 20 grenades when thrown (5 second cooldown)."; + + public override char ChatColor => ChatColors.Red; + + public override string HtmlColor => "#FF0000"; + + private readonly Dictionary _lastUse = new(); + + protected override void OnInitialize() + { + RegisterEventHandler(OnRoundStart); + RegisterEventHandler(OnDecoyStarted); + } + + private HookResult OnRoundStart(EventRoundStart @event, GameEventInfo _) + { + _lastUse.Clear(); + + foreach (var player in Utilities.GetPlayers()) + { + if (!Ensure.Player(player).IsValid().IsAlive().Check() || !IsAssignedTo(player!)) + { + continue; + } + + Server.NextFrame(() => + { + player.GiveNamedItem("weapon_decoy"); + }); + } + + return HookResult.Continue; + } + + private HookResult OnDecoyStarted(EventDecoyStarted @event, GameEventInfo _) + { + var player = @event.Userid; + if (!Ensure.Player(player).IsValid().Check() || !IsAssignedTo(player!)) + { + return HookResult.Continue; + } + + // Check cooldown (skip if nodelay is enabled) + var now = DateTime.UtcNow; + DateTime lastUseTime = default; + bool isOnCooldown = !GlobalConfig.NoDelayEnabled && _lastUse.TryGetValue(player!, out lastUseTime) && (now - lastUseTime).TotalSeconds < 5; + + // Always give a new decoy, regardless of cooldown! + player!.GiveNamedItem("weapon_decoy"); + + if (isOnCooldown) + { + double secondsRemaining = Math.Ceiling(5 - (now - lastUseTime).TotalSeconds); + player.PrintToCenterAlert($"Not So Decoy is on cooldown! {ChatColors.DarkRed}{secondsRemaining}{ChatColors.Default}s remaining"); + return HookResult.Continue; + } + _lastUse[player!] = now; + + var pos = new Vector(@event.X, @event.Y, @event.Z); + + // Spawn grenades (with boost level) in a loop with random angles and velocities + var random = new Random(); + int grenadeCount = GlobalConfig.GetNotSoDecoyCount(20); + for (int i = 0; i < grenadeCount; i++) + { + // Random pitch between -45 and 45 degrees, yaw between 0 and 360 + float pitch = (float)(random.NextDouble() * 90.0 - 45.0); + float yaw = (float)(random.NextDouble() * 360.0); + var ang = new QAngle(pitch, yaw, 0); + + // Random speed between 400 and 900 units + float speed = (float)(random.NextDouble() * 500.0 + 400.0); + + // Convert angles to a forward vector + float pitchRad = pitch * MathF.PI / 180f; + float yawRad = yaw * MathF.PI / 180f; + var forward = new Vector( + MathF.Cos(yawRad) * MathF.Cos(pitchRad), + MathF.Sin(yawRad) * MathF.Cos(pitchRad), + -MathF.Sin(pitchRad)); + + // Add some random upward velocity for the "jump" + float upward = (float)(random.NextDouble() * 200.0 + 200.0); + + var velocity = new Vector( + forward.X * speed, + forward.Y * speed, + forward.Z * speed + upward); + + var createdGrenade = GrenadeSpawner.CreateGrenade(pos, ang, velocity, player.PlayerPawn.Value); + } + return HookResult.Continue; + } +} + + diff --git a/Powers/OneShot.cs b/Powers/OneShot.cs new file mode 100644 index 0000000..021543d --- /dev/null +++ b/Powers/OneShot.cs @@ -0,0 +1,66 @@ +using CounterStrikeSharp.API; +using CounterStrikeSharp.API.Core; +using CounterStrikeSharp.API.Modules.Utils; +using Cs2SuperPowers.Players; +using Cs2SuperPowers.Players.PlayerValidations; + +namespace Cs2SuperPowers.Powers; + +public class OneShot(IPlayerHud playerHud) : BasePower(playerHud) +{ + private const double InstantKillChance = 0.25; + private readonly Random _random = new(); + + public override int Id => 23; + public override string Name => "One Shot"; + + public override string Description => $"Each damaging hit has a {(int)(InstantKillChance * 100)}% chance to instantly eliminate the enemy."; + + public override char ChatColor => ChatColors.Magenta; + + public override string HtmlColor => "#ff5CD9"; + + protected override void OnInitialize() + { + RegisterEventHandler(OnPlayerHurt); + } + + private HookResult OnPlayerHurt(EventPlayerHurt @event, GameEventInfo info) + { + var attacker = @event.Attacker; + var victim = @event.Userid; + + if (!Ensure.Player(attacker).IsValid().IsAlive().Check() || + !Ensure.Player(victim).IsValid().Check() || + attacker == victim || + !IsAssignedTo(attacker!)) + { + return HookResult.Continue; + } + + // Check for at least 1 player in the opposing team + var attackerTeam = attacker!.Team; + var enemyCount = Utilities.GetPlayers().Count(p => + p.IsValid && p.Team != CsTeam.None && p.Team != CsTeam.Spectator && p.Team != attackerTeam); + if (enemyCount < 1) + { + return HookResult.Continue; + } + + var victimPawn = victim!.PlayerPawn.Value; + if (victimPawn == null) + { + return HookResult.Continue; + } + + if (_random.NextDouble() > InstantKillChance) + { + return HookResult.Continue; + } + + victimPawn.Health = 0; + Utilities.SetStateChanged(victimPawn, "CBaseEntity", "m_iHealth"); + + return HookResult.Continue; + } +} diff --git a/Powers/PanicTeleport.cs b/Powers/PanicTeleport.cs new file mode 100644 index 0000000..f253ba4 --- /dev/null +++ b/Powers/PanicTeleport.cs @@ -0,0 +1,123 @@ +using CounterStrikeSharp.API; +using CounterStrikeSharp.API.Core; +using CounterStrikeSharp.API.Core.Attributes; +using CounterStrikeSharp.API.Modules.Entities; +using CounterStrikeSharp.API.Modules.Utils; +using Cs2SuperPowers.Players; +using Cs2SuperPowers.Players.PlayerValidations; + +namespace Cs2SuperPowers.Powers; + +public class PanicTeleport(IPlayerHud playerHud) : BasePower(playerHud) +{ + public override int Id => 16; + public override string Name => "Panic Teleport"; + + public override string Description => $"Save a single location with the use key, then teleport back to that position whenever you press the use key again."; + + public override char ChatColor => ChatColors.BlueGrey; + + public override string HtmlColor => "#cdcece"; + + private readonly List _registrations = new(); + + public override void AssignToPlayer(CCSPlayerController player, bool showMessages) + { + base.AssignToPlayer(player, showMessages); + if (_registrations.All(registration => registration.Player != player)) + { + _registrations.Add(new PanicTeleportInfo(player, null)); + } + } + + public override void UnassignFromPlayer(CCSPlayerController player) + { + base.UnassignFromPlayer(player); + var registration = _registrations.FirstOrDefault(r => r.Player == player); + if (registration != null) + { + _registrations.Remove(registration); + } + } + + protected override void OnInitialize() + { + RegisterListener(OnTick); + RegisterEventHandler(OnRoundStart); + RegisterEventHandler(OnPlayerDeath); + } + + private HookResult OnPlayerDeath(EventPlayerDeath @event, GameEventInfo info) + { + var player = @event.Userid; + var registration = _registrations + .FirstOrDefault(r => r.Player == player); + if (registration != null) + { + registration.SavedLocation = null; + registration.WasUsePressedLastTick = false; + } + return HookResult.Continue; + } + + private HookResult OnRoundStart(EventRoundStart @event, GameEventInfo info) + { + _registrations.Clear(); + foreach (var player in PlayerPowers.Instance.GetPlayersWithPower(this)) + { + _registrations.Add(new PanicTeleportInfo(player, null)); + } + + return HookResult.Continue; + } + + private void OnTick() + { + foreach (var registration in _registrations) + { + var usePressed = registration.Player.Buttons.HasFlag(PlayerButtons.Use); + if (usePressed && !registration.WasUsePressedLastTick) + { + // Key was just pressed (not held) + HandleUseKeyPress(registration); + } + registration.WasUsePressedLastTick = usePressed; + } + } + + private void HandleUseKeyPress(PanicTeleportInfo registration) + { + var player = registration.Player; + + if (!Ensure.Player(player).IsValid().Check() || player.PlayerPawn?.Value == null) + { + return; + } + + if (registration.SavedLocation == null) + { + // Save current location + var currentPos = player.PlayerPawn.Value.AbsOrigin; + if (currentPos != null) + { + registration.SavedLocation = new Vector(currentPos.X, currentPos.Y, currentPos.Z); + registration.SavedLocation.Z += 10; + player.PrintToCenterAlert($"{ChatColor}Location saved! Press use key again to teleport back."); + } + } + else + { + // Teleport to saved location + var savedPos = registration.SavedLocation; + player.PlayerPawn.Value.Teleport(savedPos, null, null); + registration.SavedLocation = null; + player.PrintToCenterAlert($"{ChatColor}Teleported. Press use to save a new location."); + } + } +} + +public record PanicTeleportInfo(CCSPlayerController Player, Vector? SavedLocation) +{ + public Vector? SavedLocation { get; set; } = SavedLocation; + public bool WasUsePressedLastTick { get; set; } = false; +} diff --git a/Powers/Phoenix.cs b/Powers/Phoenix.cs new file mode 100644 index 0000000..dd73aae --- /dev/null +++ b/Powers/Phoenix.cs @@ -0,0 +1,81 @@ +using CounterStrikeSharp.API; +using CounterStrikeSharp.API.Core; +using CounterStrikeSharp.API.Modules.Utils; +using Cs2SuperPowers.Players; +using Cs2SuperPowers.Players.PlayerValidations; + +namespace Cs2SuperPowers.Powers; + +public class Phoenix(IPlayerHud playerHud) : BasePower(playerHud) +{ + public override int Id => 2; + public override string Name => "Phoenix Rising"; + + public override string Description => $"You will be reborn after your first death like Phoenix from the ashes."; + + public override char ChatColor => ChatColors.DarkRed; + + public override string HtmlColor => "#ff5C0A"; + public override int MinimumPlayersRequired => 4; + + private HashSet _phoenixUses = new HashSet(); + + protected override void OnInitialize() + { + RegisterEventHandler(OnRoundStart); + RegisterEventHandler(OnPlayerDeath); + } + + private HookResult OnPlayerDeath(EventPlayerDeath @event, GameEventInfo _) + { + var player = @event.Userid; + if (!Ensure.Player(player).IsValid().Check() || !IsAssignedTo(player!)) + { + return HookResult.Continue; + } + + // Check for at least 4 valid (non-spectator, non-none) players total + var validPlayerCount = Utilities.GetPlayers().Count(p => + p.IsValid && p.Team != CsTeam.None && p.Team != CsTeam.Spectator); + if (validPlayerCount < 4) + { + return HookResult.Continue; + } + + if (_phoenixUses.Contains(player!)) + { + return HookResult.Continue; + } + + Server.NextFrame(() => + { + var newHealth = 120; + player!.SetNewHealth(newHealth); + player!.Respawn(); + _phoenixUses.Add(player); + + player.PrintToChat($"{ChatColors.DarkRed}Phoenix {ChatColors.Green}rises."); + }); + + return HookResult.Continue; + } + + private HookResult OnRoundStart(EventRoundStart @event, GameEventInfo _) + { + _phoenixUses = new HashSet(); + foreach (var player in Utilities.GetPlayers()) + { + if (!Ensure.Player(player).IsValid().Check() || !IsAssignedTo(player!)) + { + return HookResult.Continue; + } + + Server.NextFrame(() => + { + player.SetNewHealth(50); + }); + } + + return HookResult.Continue; + } +} diff --git a/Powers/PowerThief.cs b/Powers/PowerThief.cs new file mode 100644 index 0000000..1c9d842 --- /dev/null +++ b/Powers/PowerThief.cs @@ -0,0 +1,66 @@ +using CounterStrikeSharp.API; +using CounterStrikeSharp.API.Core; +using CounterStrikeSharp.API.Modules.Utils; +using Cs2SuperPowers.Players; +using Cs2SuperPowers.Players.PlayerValidations; + +namespace Cs2SuperPowers.Powers; + +public class PowerThief(IPlayerHud playerHud) : BasePower(playerHud) +{ + public override int Id => 15; + public override string Name => "Power Thief"; + + public override string Description => $"With a 25% chance on hit, you can permanently strip your enemies of their current superpower."; + + public override char ChatColor => ChatColors.LightYellow; + + public override string HtmlColor => "#f8e1ab"; + + private readonly Random _random = new(); + + protected override void OnInitialize() + { + RegisterEventHandler(OnPlayerHurt); + } + + private HookResult OnPlayerHurt(EventPlayerHurt @event, GameEventInfo info) + { + var attacker = @event.Attacker; + var victim = @event.Userid; + + if ( + !Ensure.Player(victim).IsValid().Check() || + !Ensure.Player(attacker).IsValid().Check() || + attacker == victim || + !IsAssignedTo(attacker!)) + { + return HookResult.Continue; + } + + // Check for at least 1 player in the opposing team + var attackerTeam = attacker!.Team; + var enemyCount = Utilities.GetPlayers().Count(p => + p.IsValid && p.Team != CsTeam.None && p.Team != CsTeam.Spectator && p.Team != attackerTeam); + if (enemyCount < 1) + { + return HookResult.Continue; + } + + if (_random.NextDouble() <= 0.25) + { + StealSuperpower(victim!, attacker!); + } + return HookResult.Continue; + } + + private void StealSuperpower(CCSPlayerController victim, CCSPlayerController attacker) + { + if (!PlayerPowers.Instance.TryGetValue(victim, out var power)) return; + + PlayerPowers.Instance.RemovePower(victim); + victim.SetMaxHealth(100); + attacker.PrintToChat($"You have stolen {ChatColors.Red}{victim.PlayerName} {ChatColors.Default}superpower {power!.ChatColor}{power.Name}."); + victim.PrintToChat($"Your superpower {power.ChatColor}{power.Name} {ChatColors.Red}was stolen! You're a regular guy/gal now."); + } +} \ No newline at end of file diff --git a/Powers/Rambo.cs b/Powers/Rambo.cs new file mode 100644 index 0000000..1454b97 --- /dev/null +++ b/Powers/Rambo.cs @@ -0,0 +1,83 @@ +using CounterStrikeSharp.API; +using CounterStrikeSharp.API.Core; +using CounterStrikeSharp.API.Modules.Utils; +using Cs2SuperPowers.Players; +using Cs2SuperPowers.Players.PlayerValidations; + +namespace Cs2SuperPowers.Powers; + +public class Rambo(IPlayerHud playerHud) : BasePower(playerHud) +{ + public override int Id => 5; + public override string Name => "John Rambo"; + + public override string Description => $"You start with additional random health, negev, kevlar and hand grenades. Enemy team gets 5000 cash."; + + public override char ChatColor => ChatColors.Green; + + public override string HtmlColor => "#009905"; + public override int MinimumPlayersRequired => 4; + + protected override void OnInitialize() + { + RegisterEventHandler(OnRoundStart); + } + + private HookResult OnRoundStart(EventRoundStart @event, GameEventInfo _) + { + var random = new Random(); + var ramboPlayers = PlayerPowers.Instance.GetPlayersWithPower(this).ToList(); + var validPlayerCount = Utilities.GetPlayers().Count(player => + player.IsValid && player.Team != CsTeam.None && player.Team != CsTeam.Spectator); + if (validPlayerCount < MinimumPlayersRequired) + { + return HookResult.Continue; + } + + // If there are any Rambo players, give enemy team 5000 cash + if (ramboPlayers.Count > 0) + { + var ramboTeam = ramboPlayers.First().Team; + foreach (var player in Utilities.GetPlayers()) + { + if (!Ensure.Player(player).IsValid().Check()) + { + continue; + } + + if (player.Team != ramboTeam && player.Team != CsTeam.None && player.Team != CsTeam.Spectator) + { + Server.NextFrame(() => + { + if (player.InGameMoneyServices != null) + { + player.InGameMoneyServices.Account += 5000; + Utilities.SetStateChanged(player, "CCSPlayerController", "m_pInGameMoneyServices"); + } + }); + } + } + } + + foreach (var player in ramboPlayers) + { + if (!Ensure.Player(player).IsValid().Check()) + { + continue; + } + + Server.NextFrame(() => + { + var newHealth = 100 + random.Next(150, 400); + + player.GiveNamedItem("weapon_negev"); + player.GiveNamedItem("item_assaultsuit"); + player.GiveNamedItem("weapon_hegrenade"); + + player.SetNewHealth(newHealth); + }); + } + + return HookResult.Continue; + } +} diff --git a/Powers/RandomTeleport.cs b/Powers/RandomTeleport.cs new file mode 100644 index 0000000..dbb29de --- /dev/null +++ b/Powers/RandomTeleport.cs @@ -0,0 +1,70 @@ +using CounterStrikeSharp.API; +using CounterStrikeSharp.API.Core; +using CounterStrikeSharp.API.Modules.Utils; +using Cs2SuperPowers.Players; +using Cs2SuperPowers.Players.PlayerValidations; + +namespace Cs2SuperPowers.Powers; + +public class RandomTeleport(IPlayerHud playerHud) : BasePower(playerHud) +{ + public override int Id => 29; + public override string Name => "Random Teleport"; + public override string Description => "Teleport to a random position on the map every time you get a kill!"; + public override char ChatColor => ChatColors.Purple; + public override string HtmlColor => "#800080"; + + private readonly Random _random = new(); + + protected override void OnInitialize() + { + RegisterEventHandler(OnPlayerDeath); + } + + private HookResult OnPlayerDeath(EventPlayerDeath @event, GameEventInfo info) + { + var attacker = @event.Attacker; + if (!Ensure.Player(attacker).IsValid().IsAlive().Check() || !IsAssignedTo(attacker!)) + { + return HookResult.Continue; + } + + var pawn = attacker!.PlayerPawn.Value; + if (pawn == null || !pawn.IsValid) + return HookResult.Continue; + + // Find random valid player to teleport near + var validPlayers = Utilities.GetPlayers() + .Where(p => p.IsValid && p.PawnIsAlive && p != attacker) + .ToList(); + + if (validPlayers.Count > 0) + { + // Teleport near a random player + var targetPlayer = validPlayers[_random.Next(validPlayers.Count)]; + var targetPos = targetPlayer.PlayerPawn.Value!.AbsOrigin!; + + // Random offset of 100-300 units + var offset = new Vector( + (float)(_random.NextDouble() * 400 - 200), + (float)(_random.NextDouble() * 400 - 200), + 50 + ); + + pawn.Teleport(targetPos + offset, null, null); + } + else + { + // If no other players, teleport in a random direction from current position + var currentPos = pawn.AbsOrigin!; + var offset = new Vector( + (float)(_random.NextDouble() * 600 - 300), + (float)(_random.NextDouble() * 600 - 300), + 100 + ); + pawn.Teleport(currentPos + offset, null, null); + } + + return HookResult.Continue; + } +} diff --git a/Powers/RiseFromTheDead.cs b/Powers/RiseFromTheDead.cs new file mode 100644 index 0000000..6001d5f --- /dev/null +++ b/Powers/RiseFromTheDead.cs @@ -0,0 +1,59 @@ +using CounterStrikeSharp.API; +using CounterStrikeSharp.API.Core; +using CounterStrikeSharp.API.Modules.Utils; +using Cs2SuperPowers.Players; +using Cs2SuperPowers.Players.PlayerValidations; + +namespace Cs2SuperPowers.Powers; + +public class RiseFromTheDead(IPlayerHud playerHud) : BasePower(playerHud) +{ + public override int Id => 1; + public override string Name => "Rise From the Dead"; + + public override string Description => $"You have {(int)(ReviveChance * 100)}% chance to rise from the dead."; + + public override char ChatColor => ChatColors.Red; + + public override string HtmlColor => "#ff5C0A"; + public override int MinimumPlayersRequired => 4; + + private const double ReviveChance = 0.35; + + private readonly Random _random = new(); + + protected override void OnInitialize() + { + RegisterEventHandler(OnPlayerDeath); + } + + private HookResult OnPlayerDeath(EventPlayerDeath @event, GameEventInfo _) + { + var player = @event.Userid; + if (!Ensure.Player(player).IsValid().Check() || !IsAssignedTo(player!)) + { + return HookResult.Continue; + } + + // Check for at least 4 valid (non-spectator, non-none) players total + var validPlayerCount = Utilities.GetPlayers().Count(p => + p.IsValid && p.Team != CsTeam.None && p.Team != CsTeam.Spectator); + if (validPlayerCount < 4) + { + return HookResult.Continue; + } + + if (_random.NextDouble() <= ReviveChance) + { + Server.NextFrame(() => + { + player!.MaxHealth = 70; + player.Health = 70; + player.Respawn(); + player.PrintToChat($"You have been raised from {ChatColors.DarkRed}the dead."); + }); + } + + return HookResult.Continue; + } +} diff --git a/Powers/Shield.cs b/Powers/Shield.cs new file mode 100644 index 0000000..3ff3416 --- /dev/null +++ b/Powers/Shield.cs @@ -0,0 +1,114 @@ +using CounterStrikeSharp.API; +using CounterStrikeSharp.API.Core; +using CounterStrikeSharp.API.Modules.Utils; +using Cs2SuperPowers.Players; +using Cs2SuperPowers.Players.PlayerValidations; + +namespace Cs2SuperPowers.Powers; + +public class Shield(IPlayerHud playerHud) : BasePower(playerHud) +{ + public override int Id => 32; + public override string Name => "Shield"; + public override string Description => "Hold E (Use) to activate a shield that blocks all damage! Shield has 100 energy points (regenerates 10 per second when not in use)."; + public override char ChatColor => ChatColors.Yellow; + public override string HtmlColor => "#FFFF00"; + + private readonly Dictionary _shieldEnergy = new(); + private readonly Dictionary _shieldActive = new(); + + protected override void OnInitialize() + { + RegisterListener(OnTick); + RegisterEventHandler(OnRoundStart); + RegisterEventHandler(OnPlayerHurt); + } + + private HookResult OnRoundStart(EventRoundStart @event, GameEventInfo _) + { + _shieldEnergy.Clear(); + _shieldActive.Clear(); + return HookResult.Continue; + } + + public override void AssignToPlayer(CCSPlayerController player, bool showMessages) + { + base.AssignToPlayer(player, showMessages); + _shieldEnergy[player] = 100.0f; + _shieldActive[player] = false; + } + + public override void UnassignFromPlayer(CCSPlayerController player) + { + base.UnassignFromPlayer(player); + _shieldEnergy.Remove(player); + _shieldActive.Remove(player); + } + + private void OnTick() + { + foreach (var player in Utilities.GetPlayers()) + { + if (!player.IsValid || !player.PawnIsAlive) + continue; + + if (!IsAssignedTo(player)) + continue; + + if (!_shieldEnergy.ContainsKey(player)) + continue; + + var usePressed = player.Buttons.HasFlag(PlayerButtons.Use); + + if (usePressed && _shieldEnergy[player] > 0) + { + // Shield is active! + _shieldActive[player] = true; + _shieldEnergy[player] -= 0.5f; // Consume 0.5 energy per tick + + // Update HUD (center alert) every second + if (Math.Abs(_shieldEnergy[player] % 20) < 1) + { + player.PrintToCenterAlert($"{ChatColor}Shield: {Math.Ceiling(_shieldEnergy[player])}%"); + } + } + else + { + // Shield not active, regenerate + _shieldActive[player] = false; + if (_shieldEnergy[player] < 100.0f) + { + _shieldEnergy[player] += 0.3f; // Regenerate 0.3 per tick + if (_shieldEnergy[player] > 100.0f) + _shieldEnergy[player] = 100.0f; + } + } + } + } + + private HookResult OnPlayerHurt(EventPlayerHurt @event, GameEventInfo info) + { + var victim = @event.Userid; + + if (!Ensure.Player(victim).IsValid().Check() || !IsAssignedTo(victim!)) + { + return HookResult.Continue; + } + + var validatedVictim = victim!; + if (_shieldActive.GetValueOrDefault(validatedVictim, false)) + { + var pawn = validatedVictim.PlayerPawn.Value; + if (pawn == null || !pawn.IsValid) + { + return HookResult.Continue; + } + + pawn.Health = Math.Min(pawn.MaxHealth, pawn.Health + @event.DmgHealth); + Utilities.SetStateChanged(pawn, "CBaseEntity", "m_iHealth"); + return HookResult.Handled; + } + + return HookResult.Continue; + } +} diff --git a/Powers/TeleportOnKill.cs b/Powers/TeleportOnKill.cs new file mode 100644 index 0000000..3b1f9cd --- /dev/null +++ b/Powers/TeleportOnKill.cs @@ -0,0 +1,61 @@ +using CounterStrikeSharp.API; +using CounterStrikeSharp.API.Core; +using CounterStrikeSharp.API.Modules.Utils; +using Cs2SuperPowers.Players; +using Cs2SuperPowers.Players.PlayerValidations; + +namespace Cs2SuperPowers.Powers; + +public class TeleportOnKill(IPlayerHud playerHud) : BasePower(playerHud) +{ + public override int Id => 21; + public override string Name => "Teleport On Kill"; + + public override string Description => $"When you kill an enemy, you teleport to their location (needs at least 4 players)"; + + public override char ChatColor => ChatColors.Red; + + public override string HtmlColor => "#FF0000"; + public override int MinimumPlayersRequired => 4; + + protected override void OnInitialize() + { + RegisterEventHandler(OnPlayerDeath); + } + + private HookResult OnPlayerDeath(EventPlayerDeath @event, GameEventInfo info) + { + var attacker = @event.Attacker; + var victim = @event.Userid; + + if ( + !Ensure.Player(victim).IsValid().Check() || + !Ensure.Player(attacker).IsValid().Check() || + attacker == victim || + !IsAssignedTo(attacker!)) + { + return HookResult.Continue; + } + + // Check for at least 4 valid (non-spectator, non-none) players total + var validPlayerCount = Utilities.GetPlayers().Count(p => + p.IsValid && p.Team != CsTeam.None && p.Team != CsTeam.Spectator); + if (validPlayerCount < 4) + { + return HookResult.Continue; + } + + if (victim!.PlayerPawn?.Value != null && attacker!.PlayerPawn?.Value != null) + { + var victimPos = victim.PlayerPawn.Value.AbsOrigin; + // raise Z a bit to avoid getting stuck in the ground + if (victimPos != null) + { + victimPos.Z += 10; + attacker.PlayerPawn.Value.Teleport(victimPos, null, null); + } + } + + return HookResult.Continue; + } +} diff --git a/Powers/Twister.cs b/Powers/Twister.cs new file mode 100644 index 0000000..4139d53 --- /dev/null +++ b/Powers/Twister.cs @@ -0,0 +1,69 @@ +using CounterStrikeSharp.API; +using CounterStrikeSharp.API.Core; +using CounterStrikeSharp.API.Modules.Utils; +using Cs2SuperPowers.Players; +using Cs2SuperPowers.Players.PlayerValidations; + +namespace Cs2SuperPowers.Powers; + +public class Twister(IPlayerHud playerHud) : BasePower(playerHud) +{ + public override int Id => 14; + public override string Name => "Twister"; + + public override string Description => $"Inflict disorienting spins upon your enemies with a 25% chance on each hit, disrupting their aim and movement."; + + public override char ChatColor => ChatColors.Silver; + + public override string HtmlColor => "#00FF00"; + + private readonly Random _random = new(); + + protected override void OnInitialize() + { + RegisterEventHandler(OnPlayerHurt); + } + + private HookResult OnPlayerHurt(EventPlayerHurt @event, GameEventInfo info) + { + var attacker = @event.Attacker; + var victim = @event.Userid; + + if ( + !Ensure.Player(victim).IsValid().Check() || + !Ensure.Player(attacker).IsValid().Check() || + attacker == victim || + !IsAssignedTo(attacker!)) + { + return HookResult.Continue; + } + + // Check for at least 1 player in the opposing team + var attackerTeam = attacker!.Team; + var enemyCount = Utilities.GetPlayers().Count(p => + p.IsValid && p.Team != CsTeam.None && p.Team != CsTeam.Spectator && p.Team != attackerTeam); + if (enemyCount < 1) + { + return HookResult.Continue; + } + + if (_random.NextDouble() <= 0.25) + { + RotateEnemy(victim!); + } + return HookResult.Continue; + } + + private void RotateEnemy(CCSPlayerController player) + { + var currentPosition = player.PlayerPawn.Value!.AbsOrigin; + var currentAngles = player.PlayerPawn.Value.V_angle; + + var newAngles = new QAngle( + currentAngles.X, + currentAngles.Y + _random.Next(-180, 180), + currentAngles.Z + ); + player.PlayerPawn.Value.Teleport(currentPosition, newAngles, new Vector(0, 0, 0)); + } +} \ No newline at end of file diff --git a/Powers/Vampire.cs b/Powers/Vampire.cs new file mode 100644 index 0000000..74dc194 --- /dev/null +++ b/Powers/Vampire.cs @@ -0,0 +1,63 @@ +using CounterStrikeSharp.API; +using CounterStrikeSharp.API.Core; +using CounterStrikeSharp.API.Modules.Utils; +using Cs2SuperPowers.Players; +using Cs2SuperPowers.Players.PlayerValidations; + +namespace Cs2SuperPowers.Powers; + +public class Vampire(IPlayerHud playerHud) : BasePower(playerHud) +{ + public override int Id => 12; + public override string Name => "Vampire"; + + public override string Description => $"Drain the life force of your enemies, healing yourself for {(int)(HealModifier * 100)}% of the damage dealt with each shot."; + + public override char ChatColor => ChatColors.Magenta; + + public override string HtmlColor => "#ff5CD9"; + public override int MinimumPlayersRequired => 4; + + private const double HealModifier = 0.7; + + protected override void OnInitialize() + { + RegisterEventHandler(OnPlayerHurt); + } + + private HookResult OnPlayerHurt(EventPlayerHurt @event, GameEventInfo info) + { + var attacker = @event.Attacker; + var victim = @event.Userid; + + if ( + !Ensure.Player(victim).IsValid().IsAlive().Check() || + !Ensure.Player(attacker).IsValid().Check() || + attacker == victim || + !IsAssignedTo(attacker!)) + { + return HookResult.Continue; + } + + // Check for at least 4 valid (non-spectator, non-none) players total + var validPlayerCount = Utilities.GetPlayers().Count(p => + p.IsValid && p.Team != CsTeam.None && p.Team != CsTeam.Spectator); + if (validPlayerCount < 4) + { + return HookResult.Continue; + } + + var attackerPawn = attacker!.PlayerPawn.Value; + if (attackerPawn == null) + { + return HookResult.Continue; + } + + var healing = (int)(@event.DmgHealth * HealModifier); + var newHealth = Math.Min(attackerPawn.Health + healing, attackerPawn.MaxHealth); + attackerPawn.Health = newHealth; + Utilities.SetStateChanged(attackerPawn, "CBaseEntity", "m_iHealth"); + + return HookResult.Continue; + } +} diff --git a/Powers/Wallhack.cs b/Powers/Wallhack.cs new file mode 100644 index 0000000..8210532 --- /dev/null +++ b/Powers/Wallhack.cs @@ -0,0 +1,291 @@ +using System.Drawing; +using CounterStrikeSharp.API; +using CounterStrikeSharp.API.Core; +using CounterStrikeSharp.API.Modules.Utils; +using Cs2SuperPowers.Players; +using Cs2SuperPowers.Players.PlayerValidations; +using Microsoft.Extensions.Logging; + +namespace Cs2SuperPowers.Powers; + +// GlowData class +public class GlowData +{ + public CDynamicProp GlowEnt { get; set; } = null!; + public CDynamicProp ModelRelay { get; set; } = null!; +} + +public class Wallhack(IPlayerHud playerHud) : BasePower(playerHud) +{ + public override int Id => 26; + public override string Name => "Wallhack"; + public override string Description => "See enemies through walls with a glow!"; + public override char ChatColor => ChatColors.Purple; + public override string HtmlColor => "#AB4BD1"; + + // Static storage + public static List Wallhackers = []; + public static Dictionary GlowData = []; + private static BasePlugin? _plugin; // Static reference to plugin! + private static readonly List _staticRegisteredDelegates = []; // Store delegates to prevent GC! + + // Static references to event handler delegates to prevent GC! + private static readonly BasePlugin.GameEventHandler _onPlayerDeathHandler = OnPlayerDeath; + private static readonly BasePlugin.GameEventHandler _onPlayerDisconnectHandler = OnPlayerDisconnect; + private static readonly BasePlugin.GameEventHandler _onPlayerSpawnHandler = OnPlayerSpawn; + private static readonly BasePlugin.GameEventHandler _onPlayerChangeTeamHandler = OnPlayerChangeTeam; + // Also store a static reference to OnPlayerTransmit! + public static readonly Action _onPlayerTransmitHandler = OnPlayerTransmit; + + public override void AssignToPlayer(CCSPlayerController player, bool showMessages) + { + base.AssignToPlayer(player, showMessages); + AddWallhacker(player); + _plugin?.Logger.LogInformation("Wallhack assigned to {PlayerName}", player.PlayerName); + + // Ensure all alive players have glows (delay slightly just in case!) + NextFrame(() => + { + foreach (var existingPlayer in Utilities.GetPlayers()) + { + if (IsPlayerValid(existingPlayer) && existingPlayer.PawnIsAlive && existingPlayer.Team >= CsTeam.Terrorist) + { + if (!GlowData.ContainsKey(existingPlayer)) + { + _plugin?.Logger.LogInformation("Creating glow for {PlayerName}", existingPlayer.PlayerName); + Glow(existingPlayer); + } + } + } + _plugin?.Logger.LogInformation("Wallhackers: {Count}, GlowData: {GlowCount}", Wallhackers.Count, GlowData.Count); + }); + } + + public override void UnassignFromPlayer(CCSPlayerController player) + { + base.UnassignFromPlayer(player); + RemoveWallhacker(player); + _plugin?.Logger.LogInformation("Wallhack unassigned from {PlayerName}", player.PlayerName); + } + + protected override void OnInitialize() + { + _plugin = Plugin; // Set static plugin reference! + RegisterEventHandler(_onPlayerDeathHandler); + RegisterEventHandler(_onPlayerDisconnectHandler); + RegisterEventHandler(_onPlayerSpawnHandler, HookMode.Post); + RegisterEventHandler(_onPlayerChangeTeamHandler, HookMode.Post); + _plugin?.Logger.LogInformation("Wallhack initialized!"); + + // Delay creating initial glows until global variables are initialized! + NextFrame(() => + { + _plugin?.Logger.LogInformation("Creating initial glows for existing players!"); + foreach (var existingPlayer in Utilities.GetPlayers()) + { + if (IsPlayerValid(existingPlayer) && existingPlayer.PawnIsAlive && existingPlayer.Team >= CsTeam.Terrorist) + { + if (!GlowData.ContainsKey(existingPlayer)) + { + _plugin?.Logger.LogInformation("Creating glow for {PlayerName} during init", existingPlayer.PlayerName); + Glow(existingPlayer); + } + } + } + }); + } + + public static HookResult OnPlayerSpawn(EventPlayerSpawn @event, GameEventInfo info) + { + var player = @event.Userid; + _plugin?.Logger.LogInformation("Wallhack: OnPlayerSpawn called for {PlayerName}", player?.PlayerName ?? "NULL"); + + if (!IsPlayerValid(player)) + { + _plugin?.Logger.LogInformation("Wallhack: Player invalid, skipping"); + return HookResult.Continue; + } + if (player!.Team < CsTeam.Terrorist) + { + _plugin?.Logger.LogInformation("Wallhack: Player team invalid, skipping"); + return HookResult.Continue; + } + + var gameRules = Utilities.FindAllEntitiesByDesignerName("cs_gamerules").FirstOrDefault(); + if (gameRules?.GameRules?.WarmupPeriod == true) + { + _plugin?.Logger.LogInformation("Wallhack: Warmup period, skipping"); + return HookResult.Continue; + } + + _plugin?.Logger.LogInformation("Wallhack: Calling Glow for {PlayerName}", player.PlayerName); + Glow(player!); + + return HookResult.Continue; + } + + public static HookResult OnPlayerDisconnect(EventPlayerDisconnect @event, GameEventInfo info) + { + var player = @event.Userid; + if (!IsPlayerValid(player)) return HookResult.Continue; + + if (GlowData.TryGetValue(player!, out var glowData)) + { + if (glowData.GlowEnt.IsValid) + glowData.GlowEnt.Remove(); + if (glowData.ModelRelay.IsValid) + glowData.ModelRelay.Remove(); + + GlowData.Remove(player!); + } + + Wallhackers.Remove(player!); + return HookResult.Continue; + } + + public static HookResult OnPlayerDeath(EventPlayerDeath @event, GameEventInfo info) + { + var player = @event.Userid; + if (!IsPlayerValid(player)) return HookResult.Continue; + if (!GlowData.TryGetValue(player!, out var glowData)) return HookResult.Continue; + + if (glowData.GlowEnt.IsValid) + glowData.GlowEnt.Remove(); + if (glowData.ModelRelay.IsValid) + glowData.ModelRelay.Remove(); + GlowData.Remove(player!); + + return HookResult.Continue; + } + + public static HookResult OnPlayerChangeTeam(EventPlayerTeam @event, GameEventInfo info) + { + var player = @event.Userid; + if (!IsPlayerValid(player)) return HookResult.Continue; + if (!GlowData.TryGetValue(player!, out var glowData)) return HookResult.Continue; + if (!glowData.GlowEnt.IsValid || !glowData.ModelRelay.IsValid) return HookResult.Continue; + + NextWorldUpdate(() => + { + glowData.GlowEnt.SetModel(GetPlayerModel(player!)); + glowData.ModelRelay.SetModel(GetPlayerModel(player!)); + }); + + return HookResult.Continue; + } + + private static void Glow(CCSPlayerController player) + { + _plugin?.Logger.LogInformation("Wallhack: Glow() called for {PlayerName}", player.PlayerName); + + // First remove existing glow for this player if it exists + if (GlowData.TryGetValue(player, out var existingGlow)) + { + if (existingGlow.GlowEnt.IsValid) + existingGlow.GlowEnt.Remove(); + if (existingGlow.ModelRelay.IsValid) + existingGlow.ModelRelay.Remove(); + GlowData.Remove(player); + } + + var glowEntity = Utilities.CreateEntityByName("prop_dynamic"); + var modelRelay = Utilities.CreateEntityByName("prop_dynamic"); + + if (glowEntity == null || modelRelay == null) + { + _plugin?.Logger.LogError("Wallhack: Failed to create glow entities for {PlayerName}", player.PlayerName); + return; + } + + modelRelay.Spawnflags = 256; + modelRelay.Render = Color.Transparent; + modelRelay.RenderMode = RenderMode_t.kRenderNone; + modelRelay.CBodyComponent!.SceneNode!.Owner!.Entity!.Flags &= ~(1u << 2); + modelRelay.SetModel(GetPlayerModel(player)); + + glowEntity.Spawnflags = 256; + glowEntity.CBodyComponent!.SceneNode!.Owner!.Entity!.Flags &= ~(1u << 2); + glowEntity.Render = Color.FromArgb(1, 0, 0, 0); + glowEntity.SetModel(GetPlayerModel(player)); + + glowEntity.DispatchSpawn(); + modelRelay.DispatchSpawn(); + + glowEntity.Glow.GlowRange = 5000; + glowEntity.Glow.GlowRangeMin = 0; + glowEntity.Glow.GlowColorOverride = Color.FromArgb(255, 171, 75, 209); + glowEntity.Glow.GlowTeam = -1; + glowEntity.Glow.GlowType = 3; + + modelRelay.AcceptInput("FollowEntity", player.Pawn.Value, null, "!activator"); + glowEntity.AcceptInput("FollowEntity", modelRelay, null, "!activator"); + + GlowData.Add(player, new GlowData + { + GlowEnt = glowEntity, + ModelRelay = modelRelay + }); + } + + private static string GetPlayerModel(CCSPlayerController player) + { + return player.Pawn.Value!.CBodyComponent!.SceneNode!.GetSkeletonInstance().ModelState.ModelName; + } + + private static bool IsPlayerValid(CCSPlayerController? plr) => plr != null && + plr.IsValid && + plr.PlayerPawn != null && + plr.PlayerPawn.IsValid && + plr.Connected == PlayerConnectedState.PlayerConnected && + !plr.IsHLTV; + + public static void OnPlayerTransmit(CCheckTransmitInfo info, CCSPlayerController player) + { + foreach (var entity in GlowData.ToList()) + { + if (Wallhackers.Contains(player!)) + { + if (!IsPlayerValid(entity.Key) || !IsPlayerValid(player)) continue; + + if (entity.Key.Team != player!.Team && player!.Team != CsTeam.Spectator && entity.Key.Team != CsTeam.Spectator) + { + info.TransmitEntities.Add(entity.Value.ModelRelay); + info.TransmitEntities.Add(entity.Value.GlowEnt); + continue; + } + } + + info.TransmitEntities.Remove(entity.Value.ModelRelay); + info.TransmitEntities.Remove(entity.Value.GlowEnt); + } + } + + public static void AddWallhacker(CCSPlayerController player) + { + if (!Wallhackers.Contains(player)) + { + Wallhackers.Add(player); + } + } + + public static void RemoveWallhacker(CCSPlayerController player) + { + Wallhackers.Remove(player); + } + + // Helper to wrap Server.NextWorldUpdate and store delegate to prevent GC! + private static void NextWorldUpdate(Action callback) + { + Action? wrappedCallback = null; + wrappedCallback = () => + { + callback(); + if (wrappedCallback != null) + { + _staticRegisteredDelegates.Remove(wrappedCallback); + } + }; + _staticRegisteredDelegates.Add(wrappedCallback); + Server.NextWorldUpdate(wrappedCallback); + } +} diff --git a/Utils/GrenadeSpawner.cs b/Utils/GrenadeSpawner.cs new file mode 100644 index 0000000..aae2a43 --- /dev/null +++ b/Utils/GrenadeSpawner.cs @@ -0,0 +1,32 @@ +using CounterStrikeSharp.API.Core; +using CounterStrikeSharp.API.Modules.Memory.DynamicFunctions; +using CounterStrikeSharp.API.Modules.Utils; + +namespace Cs2SuperPowers.Utils; + +public static class GrenadeSpawner +{ + static MemoryFunctionWithReturn + CHEGrenadeProjectile_CreateFunc = new( + "55 4C 89 C1 48 89 E5 41 57 49 89 FF 41 56 49 89 D6" + ); + + public static CBaseCSGrenadeProjectile? CreateGrenade(Vector position, QAngle angle, Vector velocity, CCSPlayerPawn? owner = null) + { + try + { + return CHEGrenadeProjectile_CreateFunc.Invoke( + position.Handle, + angle.Handle, + velocity.Handle, + velocity.Handle, + owner == null ? IntPtr.Zero : owner.Handle, + 44 + ); + } + catch + { + return null; + } + } +} diff --git a/bin/linux/Debug/net8.0/Cs2SuperPowersPlugin.deps.json b/bin/linux/Debug/net8.0/Cs2SuperPowersPlugin.deps.json new file mode 100644 index 0000000..c76f688 --- /dev/null +++ b/bin/linux/Debug/net8.0/Cs2SuperPowersPlugin.deps.json @@ -0,0 +1,888 @@ +{ + "runtimeTarget": { + "name": ".NETCoreApp,Version=v8.0", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETCoreApp,Version=v8.0": { + "Cs2SuperPowersPlugin/1.0.0": { + "dependencies": { + "CounterStrikeSharp.API": "1.0.340" + }, + "runtime": { + "Cs2SuperPowersPlugin.dll": {} + } + }, + "CounterStrikeSharp.API/1.0.340": { + "dependencies": { + "McMaster.NETCore.Plugins": "1.4.0", + "Microsoft.CSharp": "4.7.0", + "Microsoft.DotNet.ApiCompat.Task": "8.0.203", + "Microsoft.Extensions.Hosting": "8.0.0", + "Microsoft.Extensions.Hosting.Abstractions": "8.0.0", + "Microsoft.Extensions.Localization.Abstractions": "8.0.3", + "Microsoft.Extensions.Logging": "8.0.0", + "Scrutor": "4.2.2", + "Serilog.Extensions.Logging": "8.0.0", + "Serilog.Sinks.Console": "5.0.0", + "Serilog.Sinks.File": "5.0.0", + "System.Data.DataSetExtensions": "4.5.0", + "Tomlyn": "0.19.0" + }, + "runtime": { + "lib/net8.0/CounterStrikeSharp.API.dll": { + "assemblyVersion": "1.0.340.0", + "fileVersion": "1.0.340.0" + } + } + }, + "McMaster.NETCore.Plugins/1.4.0": { + "dependencies": { + "Microsoft.DotNet.PlatformAbstractions": "3.1.6", + "Microsoft.Extensions.DependencyModel": "6.0.0" + }, + "runtime": { + "lib/netcoreapp3.1/McMaster.NETCore.Plugins.dll": { + "assemblyVersion": "1.4.0.0", + "fileVersion": "1.4.0.0" + } + } + }, + "Microsoft.CSharp/4.7.0": {}, + "Microsoft.DotNet.ApiCompat.Task/8.0.203": {}, + "Microsoft.DotNet.PlatformAbstractions/3.1.6": { + "runtime": { + "lib/netstandard2.0/Microsoft.DotNet.PlatformAbstractions.dll": { + "assemblyVersion": "3.1.6.0", + "fileVersion": "3.100.620.31604" + } + } + }, + "Microsoft.Extensions.Configuration/8.0.0": { + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", + "Microsoft.Extensions.Primitives": "8.0.0" + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Configuration.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.23.53103" + } + } + }, + "Microsoft.Extensions.Configuration.Abstractions/8.0.0": { + "dependencies": { + "Microsoft.Extensions.Primitives": "8.0.0" + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Configuration.Abstractions.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.23.53103" + } + } + }, + "Microsoft.Extensions.Configuration.Binder/8.0.0": { + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0" + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Configuration.Binder.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.23.53103" + } + } + }, + "Microsoft.Extensions.Configuration.CommandLine/8.0.0": { + "dependencies": { + "Microsoft.Extensions.Configuration": "8.0.0", + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0" + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Configuration.CommandLine.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.23.53103" + } + } + }, + "Microsoft.Extensions.Configuration.EnvironmentVariables/8.0.0": { + "dependencies": { + "Microsoft.Extensions.Configuration": "8.0.0", + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0" + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Configuration.EnvironmentVariables.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.23.53103" + } + } + }, + "Microsoft.Extensions.Configuration.FileExtensions/8.0.0": { + "dependencies": { + "Microsoft.Extensions.Configuration": "8.0.0", + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", + "Microsoft.Extensions.FileProviders.Abstractions": "8.0.0", + "Microsoft.Extensions.FileProviders.Physical": "8.0.0", + "Microsoft.Extensions.Primitives": "8.0.0" + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Configuration.FileExtensions.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.23.53103" + } + } + }, + "Microsoft.Extensions.Configuration.Json/8.0.0": { + "dependencies": { + "Microsoft.Extensions.Configuration": "8.0.0", + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", + "Microsoft.Extensions.Configuration.FileExtensions": "8.0.0", + "Microsoft.Extensions.FileProviders.Abstractions": "8.0.0", + "System.Text.Json": "8.0.0" + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Configuration.Json.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.23.53103" + } + } + }, + "Microsoft.Extensions.Configuration.UserSecrets/8.0.0": { + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", + "Microsoft.Extensions.Configuration.Json": "8.0.0", + "Microsoft.Extensions.FileProviders.Abstractions": "8.0.0", + "Microsoft.Extensions.FileProviders.Physical": "8.0.0" + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Configuration.UserSecrets.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.23.53103" + } + } + }, + "Microsoft.Extensions.DependencyInjection/8.0.0": { + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0" + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.DependencyInjection.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.23.53103" + } + } + }, + "Microsoft.Extensions.DependencyInjection.Abstractions/8.0.0": { + "runtime": { + "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.23.53103" + } + } + }, + "Microsoft.Extensions.DependencyModel/6.0.0": { + "dependencies": { + "System.Buffers": "4.5.1", + "System.Memory": "4.5.4", + "System.Runtime.CompilerServices.Unsafe": "6.0.0", + "System.Text.Encodings.Web": "8.0.0", + "System.Text.Json": "8.0.0" + }, + "runtime": { + "lib/netstandard2.0/Microsoft.Extensions.DependencyModel.dll": { + "assemblyVersion": "6.0.0.0", + "fileVersion": "6.0.21.52210" + } + } + }, + "Microsoft.Extensions.Diagnostics/8.0.0": { + "dependencies": { + "Microsoft.Extensions.Configuration": "8.0.0", + "Microsoft.Extensions.Diagnostics.Abstractions": "8.0.0", + "Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0" + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Diagnostics.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.23.53103" + } + } + }, + "Microsoft.Extensions.Diagnostics.Abstractions/8.0.0": { + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0", + "Microsoft.Extensions.Options": "8.0.0", + "System.Diagnostics.DiagnosticSource": "8.0.0" + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Diagnostics.Abstractions.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.23.53103" + } + } + }, + "Microsoft.Extensions.FileProviders.Abstractions/8.0.0": { + "dependencies": { + "Microsoft.Extensions.Primitives": "8.0.0" + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.FileProviders.Abstractions.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.23.53103" + } + } + }, + "Microsoft.Extensions.FileProviders.Physical/8.0.0": { + "dependencies": { + "Microsoft.Extensions.FileProviders.Abstractions": "8.0.0", + "Microsoft.Extensions.FileSystemGlobbing": "8.0.0", + "Microsoft.Extensions.Primitives": "8.0.0" + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.FileProviders.Physical.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.23.53103" + } + } + }, + "Microsoft.Extensions.FileSystemGlobbing/8.0.0": { + "runtime": { + "lib/net8.0/Microsoft.Extensions.FileSystemGlobbing.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.23.53103" + } + } + }, + "Microsoft.Extensions.Hosting/8.0.0": { + "dependencies": { + "Microsoft.Extensions.Configuration": "8.0.0", + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", + "Microsoft.Extensions.Configuration.Binder": "8.0.0", + "Microsoft.Extensions.Configuration.CommandLine": "8.0.0", + "Microsoft.Extensions.Configuration.EnvironmentVariables": "8.0.0", + "Microsoft.Extensions.Configuration.FileExtensions": "8.0.0", + "Microsoft.Extensions.Configuration.Json": "8.0.0", + "Microsoft.Extensions.Configuration.UserSecrets": "8.0.0", + "Microsoft.Extensions.DependencyInjection": "8.0.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0", + "Microsoft.Extensions.Diagnostics": "8.0.0", + "Microsoft.Extensions.FileProviders.Abstractions": "8.0.0", + "Microsoft.Extensions.FileProviders.Physical": "8.0.0", + "Microsoft.Extensions.Hosting.Abstractions": "8.0.0", + "Microsoft.Extensions.Logging": "8.0.0", + "Microsoft.Extensions.Logging.Abstractions": "8.0.0", + "Microsoft.Extensions.Logging.Configuration": "8.0.0", + "Microsoft.Extensions.Logging.Console": "8.0.0", + "Microsoft.Extensions.Logging.Debug": "8.0.0", + "Microsoft.Extensions.Logging.EventLog": "8.0.0", + "Microsoft.Extensions.Logging.EventSource": "8.0.0", + "Microsoft.Extensions.Options": "8.0.0" + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Hosting.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.23.53103" + } + } + }, + "Microsoft.Extensions.Hosting.Abstractions/8.0.0": { + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0", + "Microsoft.Extensions.Diagnostics.Abstractions": "8.0.0", + "Microsoft.Extensions.FileProviders.Abstractions": "8.0.0", + "Microsoft.Extensions.Logging.Abstractions": "8.0.0" + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Hosting.Abstractions.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.23.53103" + } + } + }, + "Microsoft.Extensions.Localization.Abstractions/8.0.3": { + "runtime": { + "lib/net8.0/Microsoft.Extensions.Localization.Abstractions.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.324.11615" + } + } + }, + "Microsoft.Extensions.Logging/8.0.0": { + "dependencies": { + "Microsoft.Extensions.DependencyInjection": "8.0.0", + "Microsoft.Extensions.Logging.Abstractions": "8.0.0", + "Microsoft.Extensions.Options": "8.0.0" + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Logging.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.23.53103" + } + } + }, + "Microsoft.Extensions.Logging.Abstractions/8.0.0": { + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0" + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.23.53103" + } + } + }, + "Microsoft.Extensions.Logging.Configuration/8.0.0": { + "dependencies": { + "Microsoft.Extensions.Configuration": "8.0.0", + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", + "Microsoft.Extensions.Configuration.Binder": "8.0.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0", + "Microsoft.Extensions.Logging": "8.0.0", + "Microsoft.Extensions.Logging.Abstractions": "8.0.0", + "Microsoft.Extensions.Options": "8.0.0", + "Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0" + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Logging.Configuration.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.23.53103" + } + } + }, + "Microsoft.Extensions.Logging.Console/8.0.0": { + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0", + "Microsoft.Extensions.Logging": "8.0.0", + "Microsoft.Extensions.Logging.Abstractions": "8.0.0", + "Microsoft.Extensions.Logging.Configuration": "8.0.0", + "Microsoft.Extensions.Options": "8.0.0", + "System.Text.Json": "8.0.0" + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Logging.Console.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.23.53103" + } + } + }, + "Microsoft.Extensions.Logging.Debug/8.0.0": { + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0", + "Microsoft.Extensions.Logging": "8.0.0", + "Microsoft.Extensions.Logging.Abstractions": "8.0.0" + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Logging.Debug.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.23.53103" + } + } + }, + "Microsoft.Extensions.Logging.EventLog/8.0.0": { + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0", + "Microsoft.Extensions.Logging": "8.0.0", + "Microsoft.Extensions.Logging.Abstractions": "8.0.0", + "Microsoft.Extensions.Options": "8.0.0", + "System.Diagnostics.EventLog": "8.0.0" + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Logging.EventLog.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.23.53103" + } + } + }, + "Microsoft.Extensions.Logging.EventSource/8.0.0": { + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0", + "Microsoft.Extensions.Logging": "8.0.0", + "Microsoft.Extensions.Logging.Abstractions": "8.0.0", + "Microsoft.Extensions.Options": "8.0.0", + "Microsoft.Extensions.Primitives": "8.0.0", + "System.Text.Json": "8.0.0" + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Logging.EventSource.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.23.53103" + } + } + }, + "Microsoft.Extensions.Options/8.0.0": { + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0", + "Microsoft.Extensions.Primitives": "8.0.0" + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Options.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.23.53103" + } + } + }, + "Microsoft.Extensions.Options.ConfigurationExtensions/8.0.0": { + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", + "Microsoft.Extensions.Configuration.Binder": "8.0.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0", + "Microsoft.Extensions.Options": "8.0.0", + "Microsoft.Extensions.Primitives": "8.0.0" + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Options.ConfigurationExtensions.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.23.53103" + } + } + }, + "Microsoft.Extensions.Primitives/8.0.0": { + "runtime": { + "lib/net8.0/Microsoft.Extensions.Primitives.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.23.53103" + } + } + }, + "Scrutor/4.2.2": { + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0", + "Microsoft.Extensions.DependencyModel": "6.0.0" + }, + "runtime": { + "lib/net6.0/Scrutor.dll": { + "assemblyVersion": "4.0.0.0", + "fileVersion": "4.0.0.0" + } + } + }, + "Serilog/3.1.1": { + "runtime": { + "lib/net7.0/Serilog.dll": { + "assemblyVersion": "2.0.0.0", + "fileVersion": "3.1.1.0" + } + } + }, + "Serilog.Extensions.Logging/8.0.0": { + "dependencies": { + "Microsoft.Extensions.Logging": "8.0.0", + "Serilog": "3.1.1" + }, + "runtime": { + "lib/net8.0/Serilog.Extensions.Logging.dll": { + "assemblyVersion": "7.0.0.0", + "fileVersion": "8.0.0.0" + } + } + }, + "Serilog.Sinks.Console/5.0.0": { + "dependencies": { + "Serilog": "3.1.1" + }, + "runtime": { + "lib/net7.0/Serilog.Sinks.Console.dll": { + "assemblyVersion": "5.0.0.0", + "fileVersion": "5.0.0.0" + } + } + }, + "Serilog.Sinks.File/5.0.0": { + "dependencies": { + "Serilog": "3.1.1" + }, + "runtime": { + "lib/net5.0/Serilog.Sinks.File.dll": { + "assemblyVersion": "5.0.0.0", + "fileVersion": "5.0.0.0" + } + } + }, + "System.Buffers/4.5.1": {}, + "System.Data.DataSetExtensions/4.5.0": {}, + "System.Diagnostics.DiagnosticSource/8.0.0": {}, + "System.Diagnostics.EventLog/8.0.0": { + "runtime": { + "lib/net8.0/System.Diagnostics.EventLog.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.23.53103" + } + }, + "runtimeTargets": { + "runtimes/win/lib/net8.0/System.Diagnostics.EventLog.Messages.dll": { + "rid": "win", + "assetType": "runtime", + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.23.53103" + }, + "runtimes/win/lib/net8.0/System.Diagnostics.EventLog.dll": { + "rid": "win", + "assetType": "runtime", + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.23.53103" + } + } + }, + "System.Memory/4.5.4": {}, + "System.Runtime.CompilerServices.Unsafe/6.0.0": {}, + "System.Text.Encodings.Web/8.0.0": {}, + "System.Text.Json/8.0.0": { + "dependencies": { + "System.Text.Encodings.Web": "8.0.0" + } + }, + "Tomlyn/0.19.0": { + "runtime": { + "lib/net8.0/Tomlyn.dll": { + "assemblyVersion": "0.19.0.0", + "fileVersion": "0.19.0.0" + } + } + } + } + }, + "libraries": { + "Cs2SuperPowersPlugin/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "CounterStrikeSharp.API/1.0.340": { + "type": "package", + "serviceable": true, + "sha512": "sha512-d4Sl5+INHZ8l4fptY8IECFKiXd5cSKZyuLNjigZcD5HlY379jq50hSYNsqiG0tzlaCw1WAN0+4HSdS7XyULh3Q==", + "path": "counterstrikesharp.api/1.0.340", + "hashPath": "counterstrikesharp.api.1.0.340.nupkg.sha512" + }, + "McMaster.NETCore.Plugins/1.4.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-UKw5Z2/QHhkR7kiAJmqdCwVDMQV0lwsfj10+FG676r8DsJWIpxtachtEjE0qBs9WoK5GUQIqxgyFeYUSwuPszg==", + "path": "mcmaster.netcore.plugins/1.4.0", + "hashPath": "mcmaster.netcore.plugins.1.4.0.nupkg.sha512" + }, + "Microsoft.CSharp/4.7.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA==", + "path": "microsoft.csharp/4.7.0", + "hashPath": "microsoft.csharp.4.7.0.nupkg.sha512" + }, + "Microsoft.DotNet.ApiCompat.Task/8.0.203": { + "type": "package", + "serviceable": true, + "sha512": "sha512-nPEGMojf1mj1oVixe0aiBimSn6xUoZswSjpMPZFMkZ+znYm2GEM5tWGZEWb6OSNIo5gWKyDi1WcI4IL7YiL1Zw==", + "path": "microsoft.dotnet.apicompat.task/8.0.203", + "hashPath": "microsoft.dotnet.apicompat.task.8.0.203.nupkg.sha512" + }, + "Microsoft.DotNet.PlatformAbstractions/3.1.6": { + "type": "package", + "serviceable": true, + "sha512": "sha512-jek4XYaQ/PGUwDKKhwR8K47Uh1189PFzMeLqO83mXrXQVIpARZCcfuDedH50YDTepBkfijCZN5U/vZi++erxtg==", + "path": "microsoft.dotnet.platformabstractions/3.1.6", + "hashPath": "microsoft.dotnet.platformabstractions.3.1.6.nupkg.sha512" + }, + "Microsoft.Extensions.Configuration/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-0J/9YNXTMWSZP2p2+nvl8p71zpSwokZXZuJW+VjdErkegAnFdO1XlqtA62SJtgVYHdKu3uPxJHcMR/r35HwFBA==", + "path": "microsoft.extensions.configuration/8.0.0", + "hashPath": "microsoft.extensions.configuration.8.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.Configuration.Abstractions/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-3lE/iLSutpgX1CC0NOW70FJoGARRHbyKmG7dc0klnUZ9Dd9hS6N/POPWhKhMLCEuNN5nXEY5agmlFtH562vqhQ==", + "path": "microsoft.extensions.configuration.abstractions/8.0.0", + "hashPath": "microsoft.extensions.configuration.abstractions.8.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.Configuration.Binder/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-mBMoXLsr5s1y2zOHWmKsE9veDcx8h1x/c3rz4baEdQKTeDcmQAPNbB54Pi/lhFO3K431eEq6PFbMgLaa6PHFfA==", + "path": "microsoft.extensions.configuration.binder/8.0.0", + "hashPath": "microsoft.extensions.configuration.binder.8.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.Configuration.CommandLine/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-NZuZMz3Q8Z780nKX3ifV1fE7lS+6pynDHK71OfU4OZ1ItgvDOhyOC7E6z+JMZrAj63zRpwbdldYFk499t3+1dQ==", + "path": "microsoft.extensions.configuration.commandline/8.0.0", + "hashPath": "microsoft.extensions.configuration.commandline.8.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.Configuration.EnvironmentVariables/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-plvZ0ZIpq+97gdPNNvhwvrEZ92kNml9hd1pe3idMA7svR0PztdzVLkoWLcRFgySYXUJc3kSM3Xw3mNFMo/bxRA==", + "path": "microsoft.extensions.configuration.environmentvariables/8.0.0", + "hashPath": "microsoft.extensions.configuration.environmentvariables.8.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.Configuration.FileExtensions/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-McP+Lz/EKwvtCv48z0YImw+L1gi1gy5rHhNaNIY2CrjloV+XY8gydT8DjMR6zWeL13AFK+DioVpppwAuO1Gi1w==", + "path": "microsoft.extensions.configuration.fileextensions/8.0.0", + "hashPath": "microsoft.extensions.configuration.fileextensions.8.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.Configuration.Json/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-C2wqUoh9OmRL1akaCcKSTmRU8z0kckfImG7zLNI8uyi47Lp+zd5LWAD17waPQEqCz3ioWOCrFUo+JJuoeZLOBw==", + "path": "microsoft.extensions.configuration.json/8.0.0", + "hashPath": "microsoft.extensions.configuration.json.8.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.Configuration.UserSecrets/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ihDHu2dJYQird9pl2CbdwuNDfvCZdOS0S7SPlNfhPt0B81UTT+yyZKz2pimFZGUp3AfuBRnqUCxB2SjsZKHVUw==", + "path": "microsoft.extensions.configuration.usersecrets/8.0.0", + "hashPath": "microsoft.extensions.configuration.usersecrets.8.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.DependencyInjection/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-V8S3bsm50ig6JSyrbcJJ8bW2b9QLGouz+G1miK3UTaOWmMtFwNNNzUf4AleyDWUmTrWMLNnFSLEQtxmxgNQnNQ==", + "path": "microsoft.extensions.dependencyinjection/8.0.0", + "hashPath": "microsoft.extensions.dependencyinjection.8.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.DependencyInjection.Abstractions/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-cjWrLkJXK0rs4zofsK4bSdg+jhDLTaxrkXu4gS6Y7MAlCvRyNNgwY/lJi5RDlQOnSZweHqoyvgvbdvQsRIW+hg==", + "path": "microsoft.extensions.dependencyinjection.abstractions/8.0.0", + "hashPath": "microsoft.extensions.dependencyinjection.abstractions.8.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.DependencyModel/6.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-TD5QHg98m3+QhgEV1YVoNMl5KtBw/4rjfxLHO0e/YV9bPUBDKntApP4xdrVtGgCeQZHVfC2EXIGsdpRNrr87Pg==", + "path": "microsoft.extensions.dependencymodel/6.0.0", + "hashPath": "microsoft.extensions.dependencymodel.6.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.Diagnostics/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-3PZp/YSkIXrF7QK7PfC1bkyRYwqOHpWFad8Qx+4wkuumAeXo1NHaxpS9LboNA9OvNSAu+QOVlXbMyoY+pHSqcw==", + "path": "microsoft.extensions.diagnostics/8.0.0", + "hashPath": "microsoft.extensions.diagnostics.8.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.Diagnostics.Abstractions/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-JHYCQG7HmugNYUhOl368g+NMxYE/N/AiclCYRNlgCY9eVyiBkOHMwK4x60RYMxv9EL3+rmj1mqHvdCiPpC+D4Q==", + "path": "microsoft.extensions.diagnostics.abstractions/8.0.0", + "hashPath": "microsoft.extensions.diagnostics.abstractions.8.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.FileProviders.Abstractions/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ZbaMlhJlpisjuWbvXr4LdAst/1XxH3vZ6A0BsgTphZ2L4PGuxRLz7Jr/S7mkAAnOn78Vu0fKhEgNF5JO3zfjqQ==", + "path": "microsoft.extensions.fileproviders.abstractions/8.0.0", + "hashPath": "microsoft.extensions.fileproviders.abstractions.8.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.FileProviders.Physical/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-UboiXxpPUpwulHvIAVE36Knq0VSHaAmfrFkegLyBZeaADuKezJ/AIXYAW8F5GBlGk/VaibN2k/Zn1ca8YAfVdA==", + "path": "microsoft.extensions.fileproviders.physical/8.0.0", + "hashPath": "microsoft.extensions.fileproviders.physical.8.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.FileSystemGlobbing/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-OK+670i7esqlQrPjdIKRbsyMCe9g5kSLpRRQGSr4Q58AOYEe/hCnfLZprh7viNisSUUQZmMrbbuDaIrP+V1ebQ==", + "path": "microsoft.extensions.filesystemglobbing/8.0.0", + "hashPath": "microsoft.extensions.filesystemglobbing.8.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.Hosting/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ItYHpdqVp5/oFLT5QqbopnkKlyFG9EW/9nhM6/yfObeKt6Su0wkBio6AizgRHGNwhJuAtlE5VIjow5JOTrip6w==", + "path": "microsoft.extensions.hosting/8.0.0", + "hashPath": "microsoft.extensions.hosting.8.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.Hosting.Abstractions/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-AG7HWwVRdCHlaA++1oKDxLsXIBxmDpMPb3VoyOoAghEWnkUvEAdYQUwnV4jJbAaa/nMYNiEh5ByoLauZBEiovg==", + "path": "microsoft.extensions.hosting.abstractions/8.0.0", + "hashPath": "microsoft.extensions.hosting.abstractions.8.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.Localization.Abstractions/8.0.3": { + "type": "package", + "serviceable": true, + "sha512": "sha512-k/kUPm1FQBxcs9/vsM1eF4qIOg2Sovqh/+KUGHur5Mc0Y3OFGuoz9ktBX7LA0gPz53SZhW3W3oaSaMFFcjgM6Q==", + "path": "microsoft.extensions.localization.abstractions/8.0.3", + "hashPath": "microsoft.extensions.localization.abstractions.8.0.3.nupkg.sha512" + }, + "Microsoft.Extensions.Logging/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-tvRkov9tAJ3xP51LCv3FJ2zINmv1P8Hi8lhhtcKGqM+ImiTCC84uOPEI4z8Cdq2C3o9e+Aa0Gw0rmrsJD77W+w==", + "path": "microsoft.extensions.logging/8.0.0", + "hashPath": "microsoft.extensions.logging.8.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.Logging.Abstractions/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-arDBqTgFCyS0EvRV7O3MZturChstm50OJ0y9bDJvAcmEPJm0FFpFyjU/JLYyStNGGey081DvnQYlncNX5SJJGA==", + "path": "microsoft.extensions.logging.abstractions/8.0.0", + "hashPath": "microsoft.extensions.logging.abstractions.8.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.Logging.Configuration/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ixXXV0G/12g6MXK65TLngYN9V5hQQRuV+fZi882WIoVJT7h5JvoYoxTEwCgdqwLjSneqh1O+66gM8sMr9z/rsQ==", + "path": "microsoft.extensions.logging.configuration/8.0.0", + "hashPath": "microsoft.extensions.logging.configuration.8.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.Logging.Console/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-e+48o7DztoYog+PY430lPxrM4mm3PbA6qucvQtUDDwVo4MO+ejMw7YGc/o2rnxbxj4isPxdfKFzTxvXMwAz83A==", + "path": "microsoft.extensions.logging.console/8.0.0", + "hashPath": "microsoft.extensions.logging.console.8.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.Logging.Debug/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-dt0x21qBdudHLW/bjMJpkixv858RRr8eSomgVbU8qljOyfrfDGi1JQvpF9w8S7ziRPtRKisuWaOwFxJM82GxeA==", + "path": "microsoft.extensions.logging.debug/8.0.0", + "hashPath": "microsoft.extensions.logging.debug.8.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.Logging.EventLog/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-3X9D3sl7EmOu7vQp5MJrmIJBl5XSdOhZPYXUeFfYa6Nnm9+tok8x3t3IVPLhm7UJtPOU61ohFchw8rNm9tIYOQ==", + "path": "microsoft.extensions.logging.eventlog/8.0.0", + "hashPath": "microsoft.extensions.logging.eventlog.8.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.Logging.EventSource/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-oKcPMrw+luz2DUAKhwFXrmFikZWnyc8l2RKoQwqU3KIZZjcfoJE0zRHAnqATfhRZhtcbjl/QkiY2Xjxp0xu+6w==", + "path": "microsoft.extensions.logging.eventsource/8.0.0", + "hashPath": "microsoft.extensions.logging.eventsource.8.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.Options/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-JOVOfqpnqlVLUzINQ2fox8evY2SKLYJ3BV8QDe/Jyp21u1T7r45x/R/5QdteURMR5r01GxeJSBBUOCOyaNXA3g==", + "path": "microsoft.extensions.options/8.0.0", + "hashPath": "microsoft.extensions.options.8.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.Options.ConfigurationExtensions/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-0f4DMRqEd50zQh+UyJc+/HiBsZ3vhAQALgdkcQEalSH1L2isdC7Yj54M3cyo5e+BeO5fcBQ7Dxly8XiBBcvRgw==", + "path": "microsoft.extensions.options.configurationextensions/8.0.0", + "hashPath": "microsoft.extensions.options.configurationextensions.8.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.Primitives/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-bXJEZrW9ny8vjMF1JV253WeLhpEVzFo1lyaZu1vQ4ZxWUlVvknZ/+ftFgVheLubb4eZPSwwxBeqS1JkCOjxd8g==", + "path": "microsoft.extensions.primitives/8.0.0", + "hashPath": "microsoft.extensions.primitives.8.0.0.nupkg.sha512" + }, + "Scrutor/4.2.2": { + "type": "package", + "serviceable": true, + "sha512": "sha512-t5VIYA7WJXoJJo7s4DoHakMGwTu+MeEnZumMOhTCH7kz9xWha24G7dJNxWrHPlu0ZdZAS4jDZCxxAnyaBh7uYw==", + "path": "scrutor/4.2.2", + "hashPath": "scrutor.4.2.2.nupkg.sha512" + }, + "Serilog/3.1.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-P6G4/4Kt9bT635bhuwdXlJ2SCqqn2nhh4gqFqQueCOr9bK/e7W9ll/IoX1Ter948cV2Z/5+5v8pAfJYUISY03A==", + "path": "serilog/3.1.1", + "hashPath": "serilog.3.1.1.nupkg.sha512" + }, + "Serilog.Extensions.Logging/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-YEAMWu1UnWgf1c1KP85l1SgXGfiVo0Rz6x08pCiPOIBt2Qe18tcZLvdBUuV5o1QHvrs8FAry9wTIhgBRtjIlEg==", + "path": "serilog.extensions.logging/8.0.0", + "hashPath": "serilog.extensions.logging.8.0.0.nupkg.sha512" + }, + "Serilog.Sinks.Console/5.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-IZ6bn79k+3SRXOBpwSOClUHikSkp2toGPCZ0teUkscv4dpDg9E2R2xVsNkLmwddE4OpNVO3N0xiYsAH556vN8Q==", + "path": "serilog.sinks.console/5.0.0", + "hashPath": "serilog.sinks.console.5.0.0.nupkg.sha512" + }, + "Serilog.Sinks.File/5.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-uwV5hdhWPwUH1szhO8PJpFiahqXmzPzJT/sOijH/kFgUx+cyoDTMM8MHD0adw9+Iem6itoibbUXHYslzXsLEAg==", + "path": "serilog.sinks.file/5.0.0", + "hashPath": "serilog.sinks.file.5.0.0.nupkg.sha512" + }, + "System.Buffers/4.5.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-Rw7ijyl1qqRS0YQD/WycNst8hUUMgrMH4FCn1nNm27M4VxchZ1js3fVjQaANHO5f3sN4isvP4a+Met9Y4YomAg==", + "path": "system.buffers/4.5.1", + "hashPath": "system.buffers.4.5.1.nupkg.sha512" + }, + "System.Data.DataSetExtensions/4.5.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-221clPs1445HkTBZPL+K9sDBdJRB8UN8rgjO3ztB0CQ26z//fmJXtlsr6whGatscsKGBrhJl5bwJuKSA8mwFOw==", + "path": "system.data.datasetextensions/4.5.0", + "hashPath": "system.data.datasetextensions.4.5.0.nupkg.sha512" + }, + "System.Diagnostics.DiagnosticSource/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-c9xLpVz6PL9lp/djOWtk5KPDZq3cSYpmXoJQY524EOtuFl5z9ZtsotpsyrDW40U1DRnQSYvcPKEUV0X//u6gkQ==", + "path": "system.diagnostics.diagnosticsource/8.0.0", + "hashPath": "system.diagnostics.diagnosticsource.8.0.0.nupkg.sha512" + }, + "System.Diagnostics.EventLog/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-fdYxcRjQqTTacKId/2IECojlDSFvp7LP5N78+0z/xH7v/Tuw5ZAxu23Y6PTCRinqyu2ePx+Gn1098NC6jM6d+A==", + "path": "system.diagnostics.eventlog/8.0.0", + "hashPath": "system.diagnostics.eventlog.8.0.0.nupkg.sha512" + }, + "System.Memory/4.5.4": { + "type": "package", + "serviceable": true, + "sha512": "sha512-1MbJTHS1lZ4bS4FmsJjnuGJOu88ZzTT2rLvrhW7Ygic+pC0NWA+3hgAen0HRdsocuQXCkUTdFn9yHJJhsijDXw==", + "path": "system.memory/4.5.4", + "hashPath": "system.memory.4.5.4.nupkg.sha512" + }, + "System.Runtime.CompilerServices.Unsafe/6.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-/iUeP3tq1S0XdNNoMz5C9twLSrM/TH+qElHkXWaPvuNOt+99G75NrV0OS2EqHx5wMN7popYjpc8oTjC1y16DLg==", + "path": "system.runtime.compilerservices.unsafe/6.0.0", + "hashPath": "system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512" + }, + "System.Text.Encodings.Web/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-yev/k9GHAEGx2Rg3/tU6MQh4HGBXJs70y7j1LaM1i/ER9po+6nnQ6RRqTJn1E7Xu0fbIFK80Nh5EoODxrbxwBQ==", + "path": "system.text.encodings.web/8.0.0", + "hashPath": "system.text.encodings.web.8.0.0.nupkg.sha512" + }, + "System.Text.Json/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-OdrZO2WjkiEG6ajEFRABTRCi/wuXQPxeV6g8xvUJqdxMvvuCCEk86zPla8UiIQJz3durtUEbNyY/3lIhS0yZvQ==", + "path": "system.text.json/8.0.0", + "hashPath": "system.text.json.8.0.0.nupkg.sha512" + }, + "Tomlyn/0.19.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-GlI2o8R8jbZIaE+YX6uA/VoAOH7zIxYeqxDm7jHW2hqUhuB+q19oKold35FkMuv8IZDoCqsTMolaBv2eBLBmrQ==", + "path": "tomlyn/0.19.0", + "hashPath": "tomlyn.0.19.0.nupkg.sha512" + } + } +} \ No newline at end of file diff --git a/bin/linux/Debug/net8.0/Cs2SuperPowersPlugin.dll b/bin/linux/Debug/net8.0/Cs2SuperPowersPlugin.dll new file mode 100644 index 0000000000000000000000000000000000000000..67a025c5e7d825d824ea42c317dae7291774522e GIT binary patch literal 91648 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 H&MNi)?=TYU literal 0 HcmV?d00001 diff --git a/obj/Cs2SuperPowers.csproj.nuget.dgspec.json b/obj/Cs2SuperPowers.csproj.nuget.dgspec.json new file mode 100644 index 0000000..96a177c --- /dev/null +++ b/obj/Cs2SuperPowers.csproj.nuget.dgspec.json @@ -0,0 +1,67 @@ +{ + "format": 1, + "restore": { + "/root/cs2-super-powers/src/Cs2SuperPowers/Cs2SuperPowers.csproj": {} + }, + "projects": { + "/root/cs2-super-powers/src/Cs2SuperPowers/Cs2SuperPowers.csproj": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "/root/cs2-super-powers/src/Cs2SuperPowers/Cs2SuperPowers.csproj", + "projectName": "Cs2SuperPowersPlugin", + "projectPath": "/root/cs2-super-powers/src/Cs2SuperPowers/Cs2SuperPowers.csproj", + "packagesPath": "/root/.nuget/packages/", + "outputPath": "/root/cs2-super-powers/src/Cs2SuperPowers/obj/", + "projectStyle": "PackageReference", + "configFilePaths": [ + "/root/.nuget/NuGet/NuGet.Config" + ], + "originalTargetFrameworks": [ + "net8.0" + ], + "sources": { + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "projectReferences": {} + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + } + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "dependencies": { + "CounterStrikeSharp.API": { + "target": "Package", + "version": "[1.0.340, )" + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "/usr/lib/dotnet/sdk/8.0.129/PortableRuntimeIdentifierGraph.json" + } + } + } + } +} \ No newline at end of file diff --git a/obj/Cs2SuperPowers.csproj.nuget.g.props b/obj/Cs2SuperPowers.csproj.nuget.g.props new file mode 100644 index 0000000..71733b3 --- /dev/null +++ b/obj/Cs2SuperPowers.csproj.nuget.g.props @@ -0,0 +1,21 @@ + + + + True + NuGet + $(MSBuildThisFileDirectory)project.assets.json + /root/.nuget/packages/ + /root/.nuget/packages/ + PackageReference + 6.8.2 + + + + + + + + + /root/.nuget/packages/microsoft.dotnet.apicompat.task/8.0.203 + + \ No newline at end of file diff --git a/obj/Cs2SuperPowers.csproj.nuget.g.targets b/obj/Cs2SuperPowers.csproj.nuget.g.targets new file mode 100644 index 0000000..fd8701f --- /dev/null +++ b/obj/Cs2SuperPowers.csproj.nuget.g.targets @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs b/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs new file mode 100644 index 0000000..2217181 --- /dev/null +++ b/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")] diff --git a/obj/Debug/net8.0/Cs2SuperPowers.AssemblyInfo.cs b/obj/Debug/net8.0/Cs2SuperPowers.AssemblyInfo.cs new file mode 100644 index 0000000..407e478 --- /dev/null +++ b/obj/Debug/net8.0/Cs2SuperPowers.AssemblyInfo.cs @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("Cs2SuperPowersPlugin")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+6b9188af13e48a65cfefd8729e5e5469a0b35c1e")] +[assembly: System.Reflection.AssemblyProductAttribute("Cs2SuperPowersPlugin")] +[assembly: System.Reflection.AssemblyTitleAttribute("Cs2SuperPowersPlugin")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// Generated by the MSBuild WriteCodeFragment class. + diff --git a/obj/Debug/net8.0/Cs2SuperPowers.AssemblyInfoInputs.cache b/obj/Debug/net8.0/Cs2SuperPowers.AssemblyInfoInputs.cache new file mode 100644 index 0000000..1695795 --- /dev/null +++ b/obj/Debug/net8.0/Cs2SuperPowers.AssemblyInfoInputs.cache @@ -0,0 +1 @@ +fc9824fdd39076879a9102cc1b172ceb7340b30cd70e3dd0cdc1e76853ff07aa diff --git a/obj/Debug/net8.0/Cs2SuperPowers.GeneratedMSBuildEditorConfig.editorconfig b/obj/Debug/net8.0/Cs2SuperPowers.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 0000000..3a75dd8 --- /dev/null +++ b/obj/Debug/net8.0/Cs2SuperPowers.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,13 @@ +is_global = true +build_property.TargetFramework = net8.0 +build_property.TargetPlatformMinVersion = +build_property.UsingMicrosoftNETSdkWeb = +build_property.ProjectTypeGuids = +build_property.InvariantGlobalization = +build_property.PlatformNeutralAssembly = +build_property.EnforceExtendedAnalyzerRules = +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property.RootNamespace = Cs2SuperPowers +build_property.ProjectDir = /root/cs2-super-powers/src/Cs2SuperPowers/ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = diff --git a/obj/Debug/net8.0/Cs2SuperPowers.GlobalUsings.g.cs b/obj/Debug/net8.0/Cs2SuperPowers.GlobalUsings.g.cs new file mode 100644 index 0000000..8578f3d --- /dev/null +++ b/obj/Debug/net8.0/Cs2SuperPowers.GlobalUsings.g.cs @@ -0,0 +1,8 @@ +// +global using global::System; +global using global::System.Collections.Generic; +global using global::System.IO; +global using global::System.Linq; +global using global::System.Net.Http; +global using global::System.Threading; +global using global::System.Threading.Tasks; diff --git a/obj/Debug/net8.0/Cs2SuperPowers.assets.cache b/obj/Debug/net8.0/Cs2SuperPowers.assets.cache new file mode 100644 index 0000000000000000000000000000000000000000..c4619a42c972825242ee518eab0f5553e166a9d4 GIT binary patch literal 28998 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 VM4qFl!?S$0!GlemI9H0&{tqtozia>i literal 0 HcmV?d00001 diff --git a/obj/Debug/net8.0/Cs2SuperPowers.csproj.AssemblyReference.cache b/obj/Debug/net8.0/Cs2SuperPowers.csproj.AssemblyReference.cache new file mode 100644 index 0000000000000000000000000000000000000000..7c077fb8f99f71e26c0be5cef5914cb863aaa9b6 GIT binary patch literal 19086 zcmd^HYjhMv7M_;y5+w+cM+6N4Rs*DGCa*~X5s>gE5b|J=cTZ1e=%lB6=$Q#2g5V+` zXb==U>TW~@Hy|Lg0*hn?1dL>P`Pd^Hkd;LuNMHdu3#`1h`Z1{a1N6> zUALz0{l2<&>(;Glfjw!lSg?s!p5y#hoDH}sztu~SMTDF3SxGLy`YGP$=jkHKH-q54 zIN_zOcHD+1CfTeE?XEChtGBO2z2}J9R5B}*D8JeH^okYU0bEIZVe2z% z|GIC|E5)x=)@(Z0<+(lA*eY&Ab<5}&X8!ceFPA39ro2)1^qEo1KeO7tx_FSt&Y#Sc zy}4|7kF2`Q@z0dDI<}|iy`-c^qT&y1e2bemcURljzaG%3!kM*gVDolAMU9I5Zo#Km zD=;Q*=E33}*5*^NN#RshA_y$22EUX7hn;jfQk7X=IU{o4-lUg{$8P?3%N}1wZPc?LZ5TSC*^9f&{rgY9;QI67)5C78 z*x7PP*Yd@^zo`^4-}LG1)VPx$O~+=a(jO8)L_iGz2$wU>k(QX6kmhm`REkYDoCWhX zMgXeBPqBi(@ZluK7SQehPYCc^flGtaTJUdh>_ec;V5JO%{BLcqbw7SWfIPNwG0{fB z5ex4@_oriy|8L<&9_J`3=?w&`A=`4u zj~#o?%KS)HYn+gt%uALMUG^}NIr`j(hjUSkHAR^LMd!a2K_=u&mLLu3u_QBZ`zrC2 zqh}-L5CySd);pLHHBC0utwwzazG(g?GpR561O?EJn8Jdnmgsg*? z=Za~N<@V{}hLA1DuI~WN4rbv6nH}ikknnw&*IA&CL&96aNQV4Qi|+_!hb6C9AaHIN}!6dWcC zLL$J;1Ueff5Fu37yd*$pqwcqWkpysQh#6-H@uF(fhfA#?)R!km$cd(|NVdxY=EZkf zLuwlds+MDK8B{$XKoDW{;veb0BQO5wV{eqSd9g_ni&qP?{ukH4s|~r z5`&d-U<-qe=0+>!(VQqaaxKI9y-+8G&NYYa!o0*l=bFPB!bo;#@%;?v2Gy@>SNzdZ zYv}v&nKxu-fcE{efO%m?`+iw%BSF>T`(;q?pX~MZ%?(U;kq;r8dI)#S$SV!{{vbb; zUc$WCqkTWh21XKLzLw2ikO_KfVuOl=sf~px!rsXE2Ptk|GI-P*!ALgvHN^P}GWa+~ zZPl9sM?nfY0~q(C4+QQJG%xh%1A%+gHxhI$)$l>kU6eDRb(zl;WFX+%B5ujvA6*R} z)L0ZVFWl&A_z>ld1iM(r45x}g-6B9L12~WTig4tS7Rb~G_qB^GSL@*IPGt)^sfR<(<9FccyNc+i&lhC9z!sTgq=8 z88EnHfAp!l74){VeN%R&7w+M2K2TQII%?=2W~^P?Y61W^%R1an8rhXQb!Wk)#Lru`x!PiR@uaG{hks#r|L|&e_d~AVOtPJ5eLel* z^OG{RR)1Z#+cUA(=E*-}+*9qMj+O7*8WUYLbpN;okzf849eJQ~JHu5EmjmAWSHB=8inT2mqSdc) zt8#XbwIWQ>;hSSEm9T-oO@rK&@Jd540l%9F=J*%QzuoK*3y9l?svtBoFJAfgD{CZJ&M;t!bvd|8QRx{zDI^u*;L1wi`%^&!^6KPh z@UaHk8yN|XTD1RQN#5_1c5aXE*V%Hq-<@rrTu8I{BOXnu`0-%PylD|fBNxuhU-#Ow z598`?KXSBkQ@@I~cPc(x6U!8qIUXGSZL{l9!;9Fz#6G+5kEz2RXa7C(&}(an{+1oT zQr~qwa_V61Rnk`d?h}I+Yj%CpC-tDH%c18w+&vtB zavV0b0j(jRstbWh(&4lx78H=K1eeQ|41D9i?!LmnS}e(~Nn( qaPf5U_nBHqkHmGW!#(a$_!#=TB+~kZJuL}Ajihf><4}}8zw}=r96rGS literal 0 HcmV?d00001 diff --git a/obj/Debug/net8.0/Cs2SuperPowers.csproj.CoreCompileInputs.cache b/obj/Debug/net8.0/Cs2SuperPowers.csproj.CoreCompileInputs.cache new file mode 100644 index 0000000..fac3c6c --- /dev/null +++ b/obj/Debug/net8.0/Cs2SuperPowers.csproj.CoreCompileInputs.cache @@ -0,0 +1 @@ +5eefefd3a6dc2eb1c4e2012b99d9fde56476ddbf4a1872eb47da73d9bc38b56a diff --git a/obj/Debug/net8.0/Cs2SuperPowers.csproj.FileListAbsolute.txt b/obj/Debug/net8.0/Cs2SuperPowers.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..f86b96b --- /dev/null +++ b/obj/Debug/net8.0/Cs2SuperPowers.csproj.FileListAbsolute.txt @@ -0,0 +1,13 @@ +/root/cs2-super-powers/src/Cs2SuperPowers/bin/Debug/net8.0/Cs2SuperPowersPlugin.deps.json +/root/cs2-super-powers/src/Cs2SuperPowers/bin/Debug/net8.0/Cs2SuperPowersPlugin.dll +/root/cs2-super-powers/src/Cs2SuperPowers/bin/Debug/net8.0/Cs2SuperPowersPlugin.pdb +/root/cs2-super-powers/src/Cs2SuperPowers/obj/Debug/net8.0/Cs2SuperPowers.csproj.AssemblyReference.cache +/root/cs2-super-powers/src/Cs2SuperPowers/obj/Debug/net8.0/Cs2SuperPowers.GeneratedMSBuildEditorConfig.editorconfig +/root/cs2-super-powers/src/Cs2SuperPowers/obj/Debug/net8.0/Cs2SuperPowers.AssemblyInfoInputs.cache +/root/cs2-super-powers/src/Cs2SuperPowers/obj/Debug/net8.0/Cs2SuperPowers.AssemblyInfo.cs +/root/cs2-super-powers/src/Cs2SuperPowers/obj/Debug/net8.0/Cs2SuperPowers.csproj.CoreCompileInputs.cache +/root/cs2-super-powers/src/Cs2SuperPowers/obj/Debug/net8.0/Cs2SuperPowers.sourcelink.json +/root/cs2-super-powers/src/Cs2SuperPowers/obj/Debug/net8.0/Cs2SuperPowersPlugin.dll +/root/cs2-super-powers/src/Cs2SuperPowers/obj/Debug/net8.0/refint/Cs2SuperPowersPlugin.dll +/root/cs2-super-powers/src/Cs2SuperPowers/obj/Debug/net8.0/Cs2SuperPowersPlugin.pdb +/root/cs2-super-powers/src/Cs2SuperPowers/obj/Debug/net8.0/ref/Cs2SuperPowersPlugin.dll diff --git a/obj/Debug/net8.0/Cs2SuperPowers.sourcelink.json b/obj/Debug/net8.0/Cs2SuperPowers.sourcelink.json new file mode 100644 index 0000000..fe70907 --- /dev/null +++ b/obj/Debug/net8.0/Cs2SuperPowers.sourcelink.json @@ -0,0 +1 @@ +{"documents":{"/root/cs2-super-powers/*":"https://raw.githubusercontent.com/daniel-Jones/cs2-super-powers/6b9188af13e48a65cfefd8729e5e5469a0b35c1e/*"}} \ No newline at end of file diff --git a/obj/Debug/net8.0/Cs2SuperPowersPlugin.dll b/obj/Debug/net8.0/Cs2SuperPowersPlugin.dll new file mode 100644 index 0000000000000000000000000000000000000000..5a4f0490be470430ec7e8b755b21fb6dc419e238 GIT binary patch literal 59904 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 +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")] diff --git a/obj/linux/Debug/net8.0/Cs2SuperPowers.AssemblyInfo.cs b/obj/linux/Debug/net8.0/Cs2SuperPowers.AssemblyInfo.cs new file mode 100644 index 0000000..407e478 --- /dev/null +++ b/obj/linux/Debug/net8.0/Cs2SuperPowers.AssemblyInfo.cs @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("Cs2SuperPowersPlugin")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+6b9188af13e48a65cfefd8729e5e5469a0b35c1e")] +[assembly: System.Reflection.AssemblyProductAttribute("Cs2SuperPowersPlugin")] +[assembly: System.Reflection.AssemblyTitleAttribute("Cs2SuperPowersPlugin")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// Generated by the MSBuild WriteCodeFragment class. + diff --git a/obj/linux/Debug/net8.0/Cs2SuperPowers.AssemblyInfoInputs.cache b/obj/linux/Debug/net8.0/Cs2SuperPowers.AssemblyInfoInputs.cache new file mode 100644 index 0000000..1695795 --- /dev/null +++ b/obj/linux/Debug/net8.0/Cs2SuperPowers.AssemblyInfoInputs.cache @@ -0,0 +1 @@ +fc9824fdd39076879a9102cc1b172ceb7340b30cd70e3dd0cdc1e76853ff07aa diff --git a/obj/linux/Debug/net8.0/Cs2SuperPowers.GeneratedMSBuildEditorConfig.editorconfig b/obj/linux/Debug/net8.0/Cs2SuperPowers.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 0000000..3a75dd8 --- /dev/null +++ b/obj/linux/Debug/net8.0/Cs2SuperPowers.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,13 @@ +is_global = true +build_property.TargetFramework = net8.0 +build_property.TargetPlatformMinVersion = +build_property.UsingMicrosoftNETSdkWeb = +build_property.ProjectTypeGuids = +build_property.InvariantGlobalization = +build_property.PlatformNeutralAssembly = +build_property.EnforceExtendedAnalyzerRules = +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property.RootNamespace = Cs2SuperPowers +build_property.ProjectDir = /root/cs2-super-powers/src/Cs2SuperPowers/ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = diff --git a/obj/linux/Debug/net8.0/Cs2SuperPowers.GlobalUsings.g.cs b/obj/linux/Debug/net8.0/Cs2SuperPowers.GlobalUsings.g.cs new file mode 100644 index 0000000..8578f3d --- /dev/null +++ b/obj/linux/Debug/net8.0/Cs2SuperPowers.GlobalUsings.g.cs @@ -0,0 +1,8 @@ +// +global using global::System; +global using global::System.Collections.Generic; +global using global::System.IO; +global using global::System.Linq; +global using global::System.Net.Http; +global using global::System.Threading; +global using global::System.Threading.Tasks; diff --git a/obj/linux/Debug/net8.0/Cs2SuperPowers.assets.cache b/obj/linux/Debug/net8.0/Cs2SuperPowers.assets.cache new file mode 100644 index 0000000000000000000000000000000000000000..81d9de8d771142448199ad99256b102c98d69bff GIT binary patch literal 28998 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 S)S+2E+u*^*PMj-5Y5xcM)4nkP literal 0 HcmV?d00001 diff --git a/obj/linux/Debug/net8.0/Cs2SuperPowers.csproj.AssemblyReference.cache b/obj/linux/Debug/net8.0/Cs2SuperPowers.csproj.AssemblyReference.cache new file mode 100644 index 0000000000000000000000000000000000000000..7c077fb8f99f71e26c0be5cef5914cb863aaa9b6 GIT binary patch literal 19086 zcmd^HYjhMv7M_;y5+w+cM+6N4Rs*DGCa*~X5s>gE5b|J=cTZ1e=%lB6=$Q#2g5V+` zXb==U>TW~@Hy|Lg0*hn?1dL>P`Pd^Hkd;LuNMHdu3#`1h`Z1{a1N6> zUALz0{l2<&>(;Glfjw!lSg?s!p5y#hoDH}sztu~SMTDF3SxGLy`YGP$=jkHKH-q54 zIN_zOcHD+1CfTeE?XEChtGBO2z2}J9R5B}*D8JeH^okYU0bEIZVe2z% z|GIC|E5)x=)@(Z0<+(lA*eY&Ab<5}&X8!ceFPA39ro2)1^qEo1KeO7tx_FSt&Y#Sc zy}4|7kF2`Q@z0dDI<}|iy`-c^qT&y1e2bemcURljzaG%3!kM*gVDolAMU9I5Zo#Km zD=;Q*=E33}*5*^NN#RshA_y$22EUX7hn;jfQk7X=IU{o4-lUg{$8P?3%N}1wZPc?LZ5TSC*^9f&{rgY9;QI67)5C78 z*x7PP*Yd@^zo`^4-}LG1)VPx$O~+=a(jO8)L_iGz2$wU>k(QX6kmhm`REkYDoCWhX zMgXeBPqBi(@ZluK7SQehPYCc^flGtaTJUdh>_ec;V5JO%{BLcqbw7SWfIPNwG0{fB z5ex4@_oriy|8L<&9_J`3=?w&`A=`4u zj~#o?%KS)HYn+gt%uALMUG^}NIr`j(hjUSkHAR^LMd!a2K_=u&mLLu3u_QBZ`zrC2 zqh}-L5CySd);pLHHBC0utwwzazG(g?GpR561O?EJn8Jdnmgsg*? z=Za~N<@V{}hLA1DuI~WN4rbv6nH}ikknnw&*IA&CL&96aNQV4Qi|+_!hb6C9AaHIN}!6dWcC zLL$J;1Ueff5Fu37yd*$pqwcqWkpysQh#6-H@uF(fhfA#?)R!km$cd(|NVdxY=EZkf zLuwlds+MDK8B{$XKoDW{;veb0BQO5wV{eqSd9g_ni&qP?{ukH4s|~r z5`&d-U<-qe=0+>!(VQqaaxKI9y-+8G&NYYa!o0*l=bFPB!bo;#@%;?v2Gy@>SNzdZ zYv}v&nKxu-fcE{efO%m?`+iw%BSF>T`(;q?pX~MZ%?(U;kq;r8dI)#S$SV!{{vbb; zUc$WCqkTWh21XKLzLw2ikO_KfVuOl=sf~px!rsXE2Ptk|GI-P*!ALgvHN^P}GWa+~ zZPl9sM?nfY0~q(C4+QQJG%xh%1A%+gHxhI$)$l>kU6eDRb(zl;WFX+%B5ujvA6*R} z)L0ZVFWl&A_z>ld1iM(r45x}g-6B9L12~WTig4tS7Rb~G_qB^GSL@*IPGt)^sfR<(<9FccyNc+i&lhC9z!sTgq=8 z88EnHfAp!l74){VeN%R&7w+M2K2TQII%?=2W~^P?Y61W^%R1an8rhXQb!Wk)#Lru`x!PiR@uaG{hks#r|L|&e_d~AVOtPJ5eLel* z^OG{RR)1Z#+cUA(=E*-}+*9qMj+O7*8WUYLbpN;okzf849eJQ~JHu5EmjmAWSHB=8inT2mqSdc) zt8#XbwIWQ>;hSSEm9T-oO@rK&@Jd540l%9F=J*%QzuoK*3y9l?svtBoFJAfgD{CZJ&M;t!bvd|8QRx{zDI^u*;L1wi`%^&!^6KPh z@UaHk8yN|XTD1RQN#5_1c5aXE*V%Hq-<@rrTu8I{BOXnu`0-%PylD|fBNxuhU-#Ow z598`?KXSBkQ@@I~cPc(x6U!8qIUXGSZL{l9!;9Fz#6G+5kEz2RXa7C(&}(an{+1oT zQr~qwa_V61Rnk`d?h}I+Yj%CpC-tDH%c18w+&vtB zavV0b0j(jRstbWh(&4lx78H=K1eeQ|41D9i?!LmnS}e(~Nn( qaPf5U_nBHqkHmGW!#(a$_!#=TB+~kZJuL}Ajihf><4}}8zw}=r96rGS literal 0 HcmV?d00001 diff --git a/obj/linux/Debug/net8.0/Cs2SuperPowers.csproj.CoreCompileInputs.cache b/obj/linux/Debug/net8.0/Cs2SuperPowers.csproj.CoreCompileInputs.cache new file mode 100644 index 0000000..22b72fa --- /dev/null +++ b/obj/linux/Debug/net8.0/Cs2SuperPowers.csproj.CoreCompileInputs.cache @@ -0,0 +1 @@ +62926f76f909b1bea4bedcdd9f0707f28f15895e174e05e2e35caa7566aa82f1 diff --git a/obj/linux/Debug/net8.0/Cs2SuperPowers.csproj.FileListAbsolute.txt b/obj/linux/Debug/net8.0/Cs2SuperPowers.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..84d50b1 --- /dev/null +++ b/obj/linux/Debug/net8.0/Cs2SuperPowers.csproj.FileListAbsolute.txt @@ -0,0 +1,13 @@ +/root/cs2-super-powers/src/Cs2SuperPowers/obj/linux/Debug/net8.0/Cs2SuperPowers.csproj.AssemblyReference.cache +/root/cs2-super-powers/src/Cs2SuperPowers/obj/linux/Debug/net8.0/Cs2SuperPowers.GeneratedMSBuildEditorConfig.editorconfig +/root/cs2-super-powers/src/Cs2SuperPowers/obj/linux/Debug/net8.0/Cs2SuperPowers.AssemblyInfoInputs.cache +/root/cs2-super-powers/src/Cs2SuperPowers/obj/linux/Debug/net8.0/Cs2SuperPowers.AssemblyInfo.cs +/root/cs2-super-powers/src/Cs2SuperPowers/obj/linux/Debug/net8.0/Cs2SuperPowers.csproj.CoreCompileInputs.cache +/root/cs2-super-powers/src/Cs2SuperPowers/obj/linux/Debug/net8.0/Cs2SuperPowers.sourcelink.json +/root/cs2-super-powers/src/Cs2SuperPowers/bin/linux/Debug/net8.0/Cs2SuperPowersPlugin.deps.json +/root/cs2-super-powers/src/Cs2SuperPowers/bin/linux/Debug/net8.0/Cs2SuperPowersPlugin.dll +/root/cs2-super-powers/src/Cs2SuperPowers/bin/linux/Debug/net8.0/Cs2SuperPowersPlugin.pdb +/root/cs2-super-powers/src/Cs2SuperPowers/obj/linux/Debug/net8.0/Cs2SuperPowersPlugin.dll +/root/cs2-super-powers/src/Cs2SuperPowers/obj/linux/Debug/net8.0/refint/Cs2SuperPowersPlugin.dll +/root/cs2-super-powers/src/Cs2SuperPowers/obj/linux/Debug/net8.0/Cs2SuperPowersPlugin.pdb +/root/cs2-super-powers/src/Cs2SuperPowers/obj/linux/Debug/net8.0/ref/Cs2SuperPowersPlugin.dll diff --git a/obj/linux/Debug/net8.0/Cs2SuperPowers.sourcelink.json b/obj/linux/Debug/net8.0/Cs2SuperPowers.sourcelink.json new file mode 100644 index 0000000..fe70907 --- /dev/null +++ b/obj/linux/Debug/net8.0/Cs2SuperPowers.sourcelink.json @@ -0,0 +1 @@ +{"documents":{"/root/cs2-super-powers/*":"https://raw.githubusercontent.com/daniel-Jones/cs2-super-powers/6b9188af13e48a65cfefd8729e5e5469a0b35c1e/*"}} \ No newline at end of file diff --git a/obj/linux/Debug/net8.0/Cs2SuperPowersPlugin.dll b/obj/linux/Debug/net8.0/Cs2SuperPowersPlugin.dll new file mode 100644 index 0000000000000000000000000000000000000000..67a025c5e7d825d824ea42c317dae7291774522e GIT binary patch literal 91648 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 H&MNi)?=TYU literal 0 HcmV?d00001 diff --git a/obj/linux/Debug/net8.0/ref/Cs2SuperPowersPlugin.dll b/obj/linux/Debug/net8.0/ref/Cs2SuperPowersPlugin.dll new file mode 100644 index 0000000000000000000000000000000000000000..cb79b2ae4b396aefbc0e9bbfb34e8c8353213538 GIT binary patch literal 26624 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 literal 0 HcmV?d00001 diff --git a/obj/linux/Debug/net8.0/refint/Cs2SuperPowersPlugin.dll b/obj/linux/Debug/net8.0/refint/Cs2SuperPowersPlugin.dll new file mode 100644 index 0000000000000000000000000000000000000000..cb79b2ae4b396aefbc0e9bbfb34e8c8353213538 GIT binary patch literal 26624 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 literal 0 HcmV?d00001 diff --git a/obj/project.assets.json b/obj/project.assets.json new file mode 100644 index 0000000..3854b7c --- /dev/null +++ b/obj/project.assets.json @@ -0,0 +1,2619 @@ +{ + "version": 3, + "targets": { + "net8.0": { + "CounterStrikeSharp.API/1.0.340": { + "type": "package", + "dependencies": { + "McMaster.NETCore.Plugins": "1.4.0", + "Microsoft.CSharp": "4.7.0", + "Microsoft.DotNet.ApiCompat.Task": "8.0.203", + "Microsoft.Extensions.Hosting": "8.0.0", + "Microsoft.Extensions.Hosting.Abstractions": "8.0.0", + "Microsoft.Extensions.Localization.Abstractions": "8.0.3", + "Microsoft.Extensions.Logging": "8.0.0", + "Scrutor": "4.2.2", + "Serilog.Extensions.Logging": "8.0.0", + "Serilog.Sinks.Console": "5.0.0", + "Serilog.Sinks.File": "5.0.0", + "System.Data.DataSetExtensions": "4.5.0", + "Tomlyn": "0.19.0" + }, + "compile": { + "lib/net8.0/CounterStrikeSharp.API.dll": { + "related": ".runtimeconfig.json;.xml" + } + }, + "runtime": { + "lib/net8.0/CounterStrikeSharp.API.dll": { + "related": ".runtimeconfig.json;.xml" + } + } + }, + "McMaster.NETCore.Plugins/1.4.0": { + "type": "package", + "dependencies": { + "Microsoft.DotNet.PlatformAbstractions": "3.1.6", + "Microsoft.Extensions.DependencyModel": "5.0.0" + }, + "compile": { + "lib/netcoreapp3.1/McMaster.NETCore.Plugins.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netcoreapp3.1/McMaster.NETCore.Plugins.dll": { + "related": ".xml" + } + } + }, + "Microsoft.CSharp/4.7.0": { + "type": "package", + "compile": { + "ref/netcoreapp2.0/_._": {} + }, + "runtime": { + "lib/netcoreapp2.0/_._": {} + } + }, + "Microsoft.DotNet.ApiCompat.Task/8.0.203": { + "type": "package", + "build": { + "build/_._": {} + }, + "buildMultiTargeting": { + "buildMultiTargeting/_._": {} + } + }, + "Microsoft.DotNet.PlatformAbstractions/3.1.6": { + "type": "package", + "compile": { + "lib/netstandard2.0/Microsoft.DotNet.PlatformAbstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/Microsoft.DotNet.PlatformAbstractions.dll": { + "related": ".xml" + } + } + }, + "Microsoft.Extensions.Configuration/8.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", + "Microsoft.Extensions.Primitives": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Configuration.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Configuration.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Configuration.Abstractions/8.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Primitives": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Configuration.Abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Configuration.Abstractions.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Configuration.Binder/8.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Configuration.Binder.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Configuration.Binder.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/netstandard2.0/Microsoft.Extensions.Configuration.Binder.targets": {} + } + }, + "Microsoft.Extensions.Configuration.CommandLine/8.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration": "8.0.0", + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Configuration.CommandLine.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Configuration.CommandLine.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Configuration.EnvironmentVariables/8.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration": "8.0.0", + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Configuration.EnvironmentVariables.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Configuration.EnvironmentVariables.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Configuration.FileExtensions/8.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration": "8.0.0", + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", + "Microsoft.Extensions.FileProviders.Abstractions": "8.0.0", + "Microsoft.Extensions.FileProviders.Physical": "8.0.0", + "Microsoft.Extensions.Primitives": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Configuration.FileExtensions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Configuration.FileExtensions.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Configuration.Json/8.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration": "8.0.0", + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", + "Microsoft.Extensions.Configuration.FileExtensions": "8.0.0", + "Microsoft.Extensions.FileProviders.Abstractions": "8.0.0", + "System.Text.Json": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Configuration.Json.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Configuration.Json.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Configuration.UserSecrets/8.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", + "Microsoft.Extensions.Configuration.Json": "8.0.0", + "Microsoft.Extensions.FileProviders.Abstractions": "8.0.0", + "Microsoft.Extensions.FileProviders.Physical": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Configuration.UserSecrets.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Configuration.UserSecrets.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/Microsoft.Extensions.Configuration.UserSecrets.props": {}, + "buildTransitive/net6.0/Microsoft.Extensions.Configuration.UserSecrets.targets": {} + } + }, + "Microsoft.Extensions.DependencyInjection/8.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.DependencyInjection.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.DependencyInjection.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.DependencyInjection.Abstractions/8.0.0": { + "type": "package", + "compile": { + "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.DependencyModel/6.0.0": { + "type": "package", + "dependencies": { + "System.Buffers": "4.5.1", + "System.Memory": "4.5.4", + "System.Runtime.CompilerServices.Unsafe": "6.0.0", + "System.Text.Encodings.Web": "6.0.0", + "System.Text.Json": "6.0.0" + }, + "compile": { + "lib/netstandard2.0/Microsoft.Extensions.DependencyModel.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/Microsoft.Extensions.DependencyModel.dll": { + "related": ".xml" + } + } + }, + "Microsoft.Extensions.Diagnostics/8.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration": "8.0.0", + "Microsoft.Extensions.Diagnostics.Abstractions": "8.0.0", + "Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Diagnostics.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Diagnostics.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Diagnostics.Abstractions/8.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0", + "Microsoft.Extensions.Options": "8.0.0", + "System.Diagnostics.DiagnosticSource": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Diagnostics.Abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Diagnostics.Abstractions.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.FileProviders.Abstractions/8.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Primitives": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.FileProviders.Abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.FileProviders.Abstractions.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.FileProviders.Physical/8.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.FileProviders.Abstractions": "8.0.0", + "Microsoft.Extensions.FileSystemGlobbing": "8.0.0", + "Microsoft.Extensions.Primitives": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.FileProviders.Physical.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.FileProviders.Physical.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.FileSystemGlobbing/8.0.0": { + "type": "package", + "compile": { + "lib/net8.0/Microsoft.Extensions.FileSystemGlobbing.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.FileSystemGlobbing.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Hosting/8.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration": "8.0.0", + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", + "Microsoft.Extensions.Configuration.Binder": "8.0.0", + "Microsoft.Extensions.Configuration.CommandLine": "8.0.0", + "Microsoft.Extensions.Configuration.EnvironmentVariables": "8.0.0", + "Microsoft.Extensions.Configuration.FileExtensions": "8.0.0", + "Microsoft.Extensions.Configuration.Json": "8.0.0", + "Microsoft.Extensions.Configuration.UserSecrets": "8.0.0", + "Microsoft.Extensions.DependencyInjection": "8.0.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0", + "Microsoft.Extensions.Diagnostics": "8.0.0", + "Microsoft.Extensions.FileProviders.Abstractions": "8.0.0", + "Microsoft.Extensions.FileProviders.Physical": "8.0.0", + "Microsoft.Extensions.Hosting.Abstractions": "8.0.0", + "Microsoft.Extensions.Logging": "8.0.0", + "Microsoft.Extensions.Logging.Abstractions": "8.0.0", + "Microsoft.Extensions.Logging.Configuration": "8.0.0", + "Microsoft.Extensions.Logging.Console": "8.0.0", + "Microsoft.Extensions.Logging.Debug": "8.0.0", + "Microsoft.Extensions.Logging.EventLog": "8.0.0", + "Microsoft.Extensions.Logging.EventSource": "8.0.0", + "Microsoft.Extensions.Options": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Hosting.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Hosting.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Hosting.Abstractions/8.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0", + "Microsoft.Extensions.Diagnostics.Abstractions": "8.0.0", + "Microsoft.Extensions.FileProviders.Abstractions": "8.0.0", + "Microsoft.Extensions.Logging.Abstractions": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Hosting.Abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Hosting.Abstractions.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Localization.Abstractions/8.0.3": { + "type": "package", + "compile": { + "lib/net8.0/Microsoft.Extensions.Localization.Abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Localization.Abstractions.dll": { + "related": ".xml" + } + } + }, + "Microsoft.Extensions.Logging/8.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection": "8.0.0", + "Microsoft.Extensions.Logging.Abstractions": "8.0.0", + "Microsoft.Extensions.Options": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Logging.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Logging.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Logging.Abstractions/8.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/Microsoft.Extensions.Logging.Abstractions.targets": {} + } + }, + "Microsoft.Extensions.Logging.Configuration/8.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration": "8.0.0", + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", + "Microsoft.Extensions.Configuration.Binder": "8.0.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0", + "Microsoft.Extensions.Logging": "8.0.0", + "Microsoft.Extensions.Logging.Abstractions": "8.0.0", + "Microsoft.Extensions.Options": "8.0.0", + "Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Logging.Configuration.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Logging.Configuration.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Logging.Console/8.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0", + "Microsoft.Extensions.Logging": "8.0.0", + "Microsoft.Extensions.Logging.Abstractions": "8.0.0", + "Microsoft.Extensions.Logging.Configuration": "8.0.0", + "Microsoft.Extensions.Options": "8.0.0", + "System.Text.Json": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Logging.Console.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Logging.Console.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Logging.Debug/8.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0", + "Microsoft.Extensions.Logging": "8.0.0", + "Microsoft.Extensions.Logging.Abstractions": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Logging.Debug.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Logging.Debug.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Logging.EventLog/8.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0", + "Microsoft.Extensions.Logging": "8.0.0", + "Microsoft.Extensions.Logging.Abstractions": "8.0.0", + "Microsoft.Extensions.Options": "8.0.0", + "System.Diagnostics.EventLog": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Logging.EventLog.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Logging.EventLog.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Logging.EventSource/8.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0", + "Microsoft.Extensions.Logging": "8.0.0", + "Microsoft.Extensions.Logging.Abstractions": "8.0.0", + "Microsoft.Extensions.Options": "8.0.0", + "Microsoft.Extensions.Primitives": "8.0.0", + "System.Text.Json": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Logging.EventSource.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Logging.EventSource.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Options/8.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0", + "Microsoft.Extensions.Primitives": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Options.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Options.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/Microsoft.Extensions.Options.targets": {} + } + }, + "Microsoft.Extensions.Options.ConfigurationExtensions/8.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", + "Microsoft.Extensions.Configuration.Binder": "8.0.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0", + "Microsoft.Extensions.Options": "8.0.0", + "Microsoft.Extensions.Primitives": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Options.ConfigurationExtensions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Options.ConfigurationExtensions.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Primitives/8.0.0": { + "type": "package", + "compile": { + "lib/net8.0/Microsoft.Extensions.Primitives.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Primitives.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Scrutor/4.2.2": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0", + "Microsoft.Extensions.DependencyModel": "6.0.0" + }, + "compile": { + "lib/net6.0/Scrutor.dll": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/net6.0/Scrutor.dll": { + "related": ".pdb;.xml" + } + } + }, + "Serilog/3.1.1": { + "type": "package", + "compile": { + "lib/net7.0/Serilog.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net7.0/Serilog.dll": { + "related": ".xml" + } + } + }, + "Serilog.Extensions.Logging/8.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Logging": "8.0.0", + "Serilog": "3.1.1" + }, + "compile": { + "lib/net8.0/Serilog.Extensions.Logging.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Serilog.Extensions.Logging.dll": { + "related": ".xml" + } + } + }, + "Serilog.Sinks.Console/5.0.0": { + "type": "package", + "dependencies": { + "Serilog": "3.1.0" + }, + "compile": { + "lib/net7.0/Serilog.Sinks.Console.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net7.0/Serilog.Sinks.Console.dll": { + "related": ".xml" + } + } + }, + "Serilog.Sinks.File/5.0.0": { + "type": "package", + "dependencies": { + "Serilog": "2.10.0" + }, + "compile": { + "lib/net5.0/Serilog.Sinks.File.dll": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/net5.0/Serilog.Sinks.File.dll": { + "related": ".pdb;.xml" + } + } + }, + "System.Buffers/4.5.1": { + "type": "package", + "compile": { + "ref/netcoreapp2.0/_._": {} + }, + "runtime": { + "lib/netcoreapp2.0/_._": {} + } + }, + "System.Data.DataSetExtensions/4.5.0": { + "type": "package", + "compile": { + "ref/netstandard2.0/System.Data.DataSetExtensions.dll": {} + }, + "runtime": { + "lib/netstandard2.0/System.Data.DataSetExtensions.dll": {} + } + }, + "System.Diagnostics.DiagnosticSource/8.0.0": { + "type": "package", + "compile": { + "lib/net8.0/System.Diagnostics.DiagnosticSource.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/System.Diagnostics.DiagnosticSource.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "System.Diagnostics.EventLog/8.0.0": { + "type": "package", + "compile": { + "lib/net8.0/System.Diagnostics.EventLog.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/System.Diagnostics.EventLog.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + }, + "runtimeTargets": { + "runtimes/win/lib/net8.0/System.Diagnostics.EventLog.Messages.dll": { + "assetType": "runtime", + "rid": "win" + }, + "runtimes/win/lib/net8.0/System.Diagnostics.EventLog.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Memory/4.5.4": { + "type": "package", + "compile": { + "ref/netcoreapp2.1/_._": {} + }, + "runtime": { + "lib/netcoreapp2.1/_._": {} + } + }, + "System.Runtime.CompilerServices.Unsafe/6.0.0": { + "type": "package", + "compile": { + "lib/net6.0/System.Runtime.CompilerServices.Unsafe.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/System.Runtime.CompilerServices.Unsafe.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/netcoreapp3.1/_._": {} + } + }, + "System.Text.Encodings.Web/8.0.0": { + "type": "package", + "compile": { + "lib/net8.0/System.Text.Encodings.Web.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/System.Text.Encodings.Web.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + }, + "runtimeTargets": { + "runtimes/browser/lib/net8.0/System.Text.Encodings.Web.dll": { + "assetType": "runtime", + "rid": "browser" + } + } + }, + "System.Text.Json/8.0.0": { + "type": "package", + "dependencies": { + "System.Text.Encodings.Web": "8.0.0" + }, + "compile": { + "lib/net8.0/System.Text.Json.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/System.Text.Json.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/System.Text.Json.targets": {} + } + }, + "Tomlyn/0.19.0": { + "type": "package", + "compile": { + "lib/net8.0/Tomlyn.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Tomlyn.dll": { + "related": ".xml" + } + } + } + } + }, + "libraries": { + "CounterStrikeSharp.API/1.0.340": { + "sha512": "d4Sl5+INHZ8l4fptY8IECFKiXd5cSKZyuLNjigZcD5HlY379jq50hSYNsqiG0tzlaCw1WAN0+4HSdS7XyULh3Q==", + "type": "package", + "path": "counterstrikesharp.api/1.0.340", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "counterstrikesharp.api.1.0.340.nupkg.sha512", + "counterstrikesharp.api.nuspec", + "lib/net8.0/CounterStrikeSharp.API.dll", + "lib/net8.0/CounterStrikeSharp.API.runtimeconfig.json", + "lib/net8.0/CounterStrikeSharp.API.xml" + ] + }, + "McMaster.NETCore.Plugins/1.4.0": { + "sha512": "UKw5Z2/QHhkR7kiAJmqdCwVDMQV0lwsfj10+FG676r8DsJWIpxtachtEjE0qBs9WoK5GUQIqxgyFeYUSwuPszg==", + "type": "package", + "path": "mcmaster.netcore.plugins/1.4.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/netcoreapp2.1/McMaster.NETCore.Plugins.dll", + "lib/netcoreapp2.1/McMaster.NETCore.Plugins.xml", + "lib/netcoreapp3.1/McMaster.NETCore.Plugins.dll", + "lib/netcoreapp3.1/McMaster.NETCore.Plugins.xml", + "mcmaster.netcore.plugins.1.4.0.nupkg.sha512", + "mcmaster.netcore.plugins.nuspec" + ] + }, + "Microsoft.CSharp/4.7.0": { + "sha512": "pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA==", + "type": "package", + "path": "microsoft.csharp/4.7.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/Microsoft.CSharp.dll", + "lib/netcoreapp2.0/_._", + "lib/netstandard1.3/Microsoft.CSharp.dll", + "lib/netstandard2.0/Microsoft.CSharp.dll", + "lib/netstandard2.0/Microsoft.CSharp.xml", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/uap10.0.16299/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "microsoft.csharp.4.7.0.nupkg.sha512", + "microsoft.csharp.nuspec", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/Microsoft.CSharp.dll", + "ref/netcore50/Microsoft.CSharp.xml", + "ref/netcore50/de/Microsoft.CSharp.xml", + "ref/netcore50/es/Microsoft.CSharp.xml", + "ref/netcore50/fr/Microsoft.CSharp.xml", + "ref/netcore50/it/Microsoft.CSharp.xml", + "ref/netcore50/ja/Microsoft.CSharp.xml", + "ref/netcore50/ko/Microsoft.CSharp.xml", + "ref/netcore50/ru/Microsoft.CSharp.xml", + "ref/netcore50/zh-hans/Microsoft.CSharp.xml", + "ref/netcore50/zh-hant/Microsoft.CSharp.xml", + "ref/netcoreapp2.0/_._", + "ref/netstandard1.0/Microsoft.CSharp.dll", + "ref/netstandard1.0/Microsoft.CSharp.xml", + "ref/netstandard1.0/de/Microsoft.CSharp.xml", + "ref/netstandard1.0/es/Microsoft.CSharp.xml", + "ref/netstandard1.0/fr/Microsoft.CSharp.xml", + "ref/netstandard1.0/it/Microsoft.CSharp.xml", + "ref/netstandard1.0/ja/Microsoft.CSharp.xml", + "ref/netstandard1.0/ko/Microsoft.CSharp.xml", + "ref/netstandard1.0/ru/Microsoft.CSharp.xml", + "ref/netstandard1.0/zh-hans/Microsoft.CSharp.xml", + "ref/netstandard1.0/zh-hant/Microsoft.CSharp.xml", + "ref/netstandard2.0/Microsoft.CSharp.dll", + "ref/netstandard2.0/Microsoft.CSharp.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/uap10.0.16299/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "Microsoft.DotNet.ApiCompat.Task/8.0.203": { + "sha512": "nPEGMojf1mj1oVixe0aiBimSn6xUoZswSjpMPZFMkZ+znYm2GEM5tWGZEWb6OSNIo5gWKyDi1WcI4IL7YiL1Zw==", + "type": "package", + "path": "microsoft.dotnet.apicompat.task/8.0.203", + "hasTools": true, + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.txt", + "build/Microsoft.DotNet.ApiCompat.Task.targets", + "build/Microsoft.DotNet.ApiCompat.ValidateAssemblies.Common.targets", + "build/Microsoft.DotNet.ApiCompat.ValidateAssemblies.CrossTargeting.targets", + "build/Microsoft.DotNet.ApiCompat.ValidateAssemblies.NonCrossTargeting.targets", + "build/Microsoft.NET.ApiCompat.Common.targets", + "build/Microsoft.NET.ApiCompat.ValidatePackage.targets", + "buildMultiTargeting/Microsoft.DotNet.ApiCompat.Task.targets", + "microsoft.dotnet.apicompat.task.8.0.203.nupkg.sha512", + "microsoft.dotnet.apicompat.task.nuspec", + "tools/net472/Microsoft.DotNet.ApiCompat.Task.dll", + "tools/net472/Microsoft.DotNet.ApiCompat.Task.dll.config", + "tools/net472/Microsoft.DotNet.ApiCompat.Task.pdb", + "tools/net472/Microsoft.DotNet.ApiCompat.Task.xml", + "tools/net472/Microsoft.DotNet.ApiCompatibility.dll", + "tools/net472/Microsoft.DotNet.ApiCompatibility.dll.config", + "tools/net472/Microsoft.DotNet.ApiCompatibility.pdb", + "tools/net472/Microsoft.DotNet.ApiCompatibility.xml", + "tools/net472/Microsoft.DotNet.ApiSymbolExtensions.dll", + "tools/net472/Microsoft.DotNet.ApiSymbolExtensions.dll.config", + "tools/net472/Microsoft.DotNet.ApiSymbolExtensions.pdb", + "tools/net472/Microsoft.DotNet.ApiSymbolExtensions.xml", + "tools/net472/Microsoft.DotNet.PackageValidation.dll", + "tools/net472/Microsoft.DotNet.PackageValidation.dll.config", + "tools/net472/Microsoft.DotNet.PackageValidation.pdb", + "tools/net472/Microsoft.DotNet.PackageValidation.xml", + "tools/net472/Newtonsoft.Json.dll", + "tools/net472/NuGet.Common.dll", + "tools/net472/NuGet.Configuration.dll", + "tools/net472/NuGet.Frameworks.dll", + "tools/net472/NuGet.Packaging.dll", + "tools/net472/NuGet.Versioning.dll", + "tools/net472/cs/Microsoft.DotNet.ApiCompat.Task.resources.dll", + "tools/net472/cs/Microsoft.DotNet.ApiCompatibility.resources.dll", + "tools/net472/cs/Microsoft.DotNet.ApiSymbolExtensions.resources.dll", + "tools/net472/cs/Microsoft.DotNet.PackageValidation.resources.dll", + "tools/net472/de/Microsoft.DotNet.ApiCompat.Task.resources.dll", + "tools/net472/de/Microsoft.DotNet.ApiCompatibility.resources.dll", + "tools/net472/de/Microsoft.DotNet.ApiSymbolExtensions.resources.dll", + "tools/net472/de/Microsoft.DotNet.PackageValidation.resources.dll", + "tools/net472/es/Microsoft.DotNet.ApiCompat.Task.resources.dll", + "tools/net472/es/Microsoft.DotNet.ApiCompatibility.resources.dll", + "tools/net472/es/Microsoft.DotNet.ApiSymbolExtensions.resources.dll", + "tools/net472/es/Microsoft.DotNet.PackageValidation.resources.dll", + "tools/net472/fr/Microsoft.DotNet.ApiCompat.Task.resources.dll", + "tools/net472/fr/Microsoft.DotNet.ApiCompatibility.resources.dll", + "tools/net472/fr/Microsoft.DotNet.ApiSymbolExtensions.resources.dll", + "tools/net472/fr/Microsoft.DotNet.PackageValidation.resources.dll", + "tools/net472/it/Microsoft.DotNet.ApiCompat.Task.resources.dll", + "tools/net472/it/Microsoft.DotNet.ApiCompatibility.resources.dll", + "tools/net472/it/Microsoft.DotNet.ApiSymbolExtensions.resources.dll", + "tools/net472/it/Microsoft.DotNet.PackageValidation.resources.dll", + "tools/net472/ja/Microsoft.DotNet.ApiCompat.Task.resources.dll", + "tools/net472/ja/Microsoft.DotNet.ApiCompatibility.resources.dll", + "tools/net472/ja/Microsoft.DotNet.ApiSymbolExtensions.resources.dll", + "tools/net472/ja/Microsoft.DotNet.PackageValidation.resources.dll", + "tools/net472/ko/Microsoft.DotNet.ApiCompat.Task.resources.dll", + "tools/net472/ko/Microsoft.DotNet.ApiCompatibility.resources.dll", + "tools/net472/ko/Microsoft.DotNet.ApiSymbolExtensions.resources.dll", + "tools/net472/ko/Microsoft.DotNet.PackageValidation.resources.dll", + "tools/net472/pl/Microsoft.DotNet.ApiCompat.Task.resources.dll", + "tools/net472/pl/Microsoft.DotNet.ApiCompatibility.resources.dll", + "tools/net472/pl/Microsoft.DotNet.ApiSymbolExtensions.resources.dll", + "tools/net472/pl/Microsoft.DotNet.PackageValidation.resources.dll", + "tools/net472/pt-BR/Microsoft.DotNet.ApiCompat.Task.resources.dll", + "tools/net472/pt-BR/Microsoft.DotNet.ApiCompatibility.resources.dll", + "tools/net472/pt-BR/Microsoft.DotNet.ApiSymbolExtensions.resources.dll", + "tools/net472/pt-BR/Microsoft.DotNet.PackageValidation.resources.dll", + "tools/net472/ru/Microsoft.DotNet.ApiCompat.Task.resources.dll", + "tools/net472/ru/Microsoft.DotNet.ApiCompatibility.resources.dll", + "tools/net472/ru/Microsoft.DotNet.ApiSymbolExtensions.resources.dll", + "tools/net472/ru/Microsoft.DotNet.PackageValidation.resources.dll", + "tools/net472/tr/Microsoft.DotNet.ApiCompat.Task.resources.dll", + "tools/net472/tr/Microsoft.DotNet.ApiCompatibility.resources.dll", + "tools/net472/tr/Microsoft.DotNet.ApiSymbolExtensions.resources.dll", + "tools/net472/tr/Microsoft.DotNet.PackageValidation.resources.dll", + "tools/net472/zh-Hans/Microsoft.DotNet.ApiCompat.Task.resources.dll", + "tools/net472/zh-Hans/Microsoft.DotNet.ApiCompatibility.resources.dll", + "tools/net472/zh-Hans/Microsoft.DotNet.ApiSymbolExtensions.resources.dll", + "tools/net472/zh-Hans/Microsoft.DotNet.PackageValidation.resources.dll", + "tools/net472/zh-Hant/Microsoft.DotNet.ApiCompat.Task.resources.dll", + "tools/net472/zh-Hant/Microsoft.DotNet.ApiCompatibility.resources.dll", + "tools/net472/zh-Hant/Microsoft.DotNet.ApiSymbolExtensions.resources.dll", + "tools/net472/zh-Hant/Microsoft.DotNet.PackageValidation.resources.dll", + "tools/net6.0/Microsoft.DotNet.ApiCompat.Task.deps.json", + "tools/net6.0/Microsoft.DotNet.ApiCompat.Task.dll", + "tools/net6.0/Microsoft.DotNet.ApiCompat.Task.pdb", + "tools/net6.0/Microsoft.DotNet.ApiCompat.Task.xml", + "tools/net6.0/Microsoft.DotNet.ApiCompatibility.dll", + "tools/net6.0/Microsoft.DotNet.ApiCompatibility.pdb", + "tools/net6.0/Microsoft.DotNet.ApiCompatibility.xml", + "tools/net6.0/Microsoft.DotNet.ApiSymbolExtensions.dll", + "tools/net6.0/Microsoft.DotNet.ApiSymbolExtensions.pdb", + "tools/net6.0/Microsoft.DotNet.ApiSymbolExtensions.xml", + "tools/net6.0/Microsoft.DotNet.PackageValidation.dll", + "tools/net6.0/Microsoft.DotNet.PackageValidation.pdb", + "tools/net6.0/Microsoft.DotNet.PackageValidation.xml", + "tools/net6.0/Newtonsoft.Json.dll", + "tools/net6.0/NuGet.Common.dll", + "tools/net6.0/NuGet.Configuration.dll", + "tools/net6.0/NuGet.Frameworks.dll", + "tools/net6.0/NuGet.Packaging.dll", + "tools/net6.0/NuGet.Versioning.dll", + "tools/net6.0/System.Formats.Asn1.dll", + "tools/net6.0/System.Security.Cryptography.Pkcs.dll", + "tools/net6.0/System.Security.Cryptography.ProtectedData.dll", + "tools/net6.0/cs/Microsoft.DotNet.ApiCompat.Task.resources.dll", + "tools/net6.0/cs/Microsoft.DotNet.ApiCompatibility.resources.dll", + "tools/net6.0/cs/Microsoft.DotNet.ApiSymbolExtensions.resources.dll", + "tools/net6.0/cs/Microsoft.DotNet.PackageValidation.resources.dll", + "tools/net6.0/de/Microsoft.DotNet.ApiCompat.Task.resources.dll", + "tools/net6.0/de/Microsoft.DotNet.ApiCompatibility.resources.dll", + "tools/net6.0/de/Microsoft.DotNet.ApiSymbolExtensions.resources.dll", + "tools/net6.0/de/Microsoft.DotNet.PackageValidation.resources.dll", + "tools/net6.0/es/Microsoft.DotNet.ApiCompat.Task.resources.dll", + "tools/net6.0/es/Microsoft.DotNet.ApiCompatibility.resources.dll", + "tools/net6.0/es/Microsoft.DotNet.ApiSymbolExtensions.resources.dll", + "tools/net6.0/es/Microsoft.DotNet.PackageValidation.resources.dll", + "tools/net6.0/fr/Microsoft.DotNet.ApiCompat.Task.resources.dll", + "tools/net6.0/fr/Microsoft.DotNet.ApiCompatibility.resources.dll", + "tools/net6.0/fr/Microsoft.DotNet.ApiSymbolExtensions.resources.dll", + "tools/net6.0/fr/Microsoft.DotNet.PackageValidation.resources.dll", + "tools/net6.0/it/Microsoft.DotNet.ApiCompat.Task.resources.dll", + "tools/net6.0/it/Microsoft.DotNet.ApiCompatibility.resources.dll", + "tools/net6.0/it/Microsoft.DotNet.ApiSymbolExtensions.resources.dll", + "tools/net6.0/it/Microsoft.DotNet.PackageValidation.resources.dll", + "tools/net6.0/ja/Microsoft.DotNet.ApiCompat.Task.resources.dll", + "tools/net6.0/ja/Microsoft.DotNet.ApiCompatibility.resources.dll", + "tools/net6.0/ja/Microsoft.DotNet.ApiSymbolExtensions.resources.dll", + "tools/net6.0/ja/Microsoft.DotNet.PackageValidation.resources.dll", + "tools/net6.0/ko/Microsoft.DotNet.ApiCompat.Task.resources.dll", + "tools/net6.0/ko/Microsoft.DotNet.ApiCompatibility.resources.dll", + "tools/net6.0/ko/Microsoft.DotNet.ApiSymbolExtensions.resources.dll", + "tools/net6.0/ko/Microsoft.DotNet.PackageValidation.resources.dll", + "tools/net6.0/pl/Microsoft.DotNet.ApiCompat.Task.resources.dll", + "tools/net6.0/pl/Microsoft.DotNet.ApiCompatibility.resources.dll", + "tools/net6.0/pl/Microsoft.DotNet.ApiSymbolExtensions.resources.dll", + "tools/net6.0/pl/Microsoft.DotNet.PackageValidation.resources.dll", + "tools/net6.0/pt-BR/Microsoft.DotNet.ApiCompat.Task.resources.dll", + "tools/net6.0/pt-BR/Microsoft.DotNet.ApiCompatibility.resources.dll", + "tools/net6.0/pt-BR/Microsoft.DotNet.ApiSymbolExtensions.resources.dll", + "tools/net6.0/pt-BR/Microsoft.DotNet.PackageValidation.resources.dll", + "tools/net6.0/ru/Microsoft.DotNet.ApiCompat.Task.resources.dll", + "tools/net6.0/ru/Microsoft.DotNet.ApiCompatibility.resources.dll", + "tools/net6.0/ru/Microsoft.DotNet.ApiSymbolExtensions.resources.dll", + "tools/net6.0/ru/Microsoft.DotNet.PackageValidation.resources.dll", + "tools/net6.0/runtimes/win/lib/net6.0/System.Security.Cryptography.Pkcs.dll", + "tools/net6.0/tr/Microsoft.DotNet.ApiCompat.Task.resources.dll", + "tools/net6.0/tr/Microsoft.DotNet.ApiCompatibility.resources.dll", + "tools/net6.0/tr/Microsoft.DotNet.ApiSymbolExtensions.resources.dll", + "tools/net6.0/tr/Microsoft.DotNet.PackageValidation.resources.dll", + "tools/net6.0/zh-Hans/Microsoft.DotNet.ApiCompat.Task.resources.dll", + "tools/net6.0/zh-Hans/Microsoft.DotNet.ApiCompatibility.resources.dll", + "tools/net6.0/zh-Hans/Microsoft.DotNet.ApiSymbolExtensions.resources.dll", + "tools/net6.0/zh-Hans/Microsoft.DotNet.PackageValidation.resources.dll", + "tools/net6.0/zh-Hant/Microsoft.DotNet.ApiCompat.Task.resources.dll", + "tools/net6.0/zh-Hant/Microsoft.DotNet.ApiCompatibility.resources.dll", + "tools/net6.0/zh-Hant/Microsoft.DotNet.ApiSymbolExtensions.resources.dll", + "tools/net6.0/zh-Hant/Microsoft.DotNet.PackageValidation.resources.dll" + ] + }, + "Microsoft.DotNet.PlatformAbstractions/3.1.6": { + "sha512": "jek4XYaQ/PGUwDKKhwR8K47Uh1189PFzMeLqO83mXrXQVIpARZCcfuDedH50YDTepBkfijCZN5U/vZi++erxtg==", + "type": "package", + "path": "microsoft.dotnet.platformabstractions/3.1.6", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/net45/Microsoft.DotNet.PlatformAbstractions.dll", + "lib/net45/Microsoft.DotNet.PlatformAbstractions.xml", + "lib/netstandard1.3/Microsoft.DotNet.PlatformAbstractions.dll", + "lib/netstandard1.3/Microsoft.DotNet.PlatformAbstractions.xml", + "lib/netstandard2.0/Microsoft.DotNet.PlatformAbstractions.dll", + "lib/netstandard2.0/Microsoft.DotNet.PlatformAbstractions.xml", + "microsoft.dotnet.platformabstractions.3.1.6.nupkg.sha512", + "microsoft.dotnet.platformabstractions.nuspec" + ] + }, + "Microsoft.Extensions.Configuration/8.0.0": { + "sha512": "0J/9YNXTMWSZP2p2+nvl8p71zpSwokZXZuJW+VjdErkegAnFdO1XlqtA62SJtgVYHdKu3uPxJHcMR/r35HwFBA==", + "type": "package", + "path": "microsoft.extensions.configuration/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Configuration.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Configuration.targets", + "lib/net462/Microsoft.Extensions.Configuration.dll", + "lib/net462/Microsoft.Extensions.Configuration.xml", + "lib/net6.0/Microsoft.Extensions.Configuration.dll", + "lib/net6.0/Microsoft.Extensions.Configuration.xml", + "lib/net7.0/Microsoft.Extensions.Configuration.dll", + "lib/net7.0/Microsoft.Extensions.Configuration.xml", + "lib/net8.0/Microsoft.Extensions.Configuration.dll", + "lib/net8.0/Microsoft.Extensions.Configuration.xml", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.dll", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.xml", + "microsoft.extensions.configuration.8.0.0.nupkg.sha512", + "microsoft.extensions.configuration.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Configuration.Abstractions/8.0.0": { + "sha512": "3lE/iLSutpgX1CC0NOW70FJoGARRHbyKmG7dc0klnUZ9Dd9hS6N/POPWhKhMLCEuNN5nXEY5agmlFtH562vqhQ==", + "type": "package", + "path": "microsoft.extensions.configuration.abstractions/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Configuration.Abstractions.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Configuration.Abstractions.targets", + "lib/net462/Microsoft.Extensions.Configuration.Abstractions.dll", + "lib/net462/Microsoft.Extensions.Configuration.Abstractions.xml", + "lib/net6.0/Microsoft.Extensions.Configuration.Abstractions.dll", + "lib/net6.0/Microsoft.Extensions.Configuration.Abstractions.xml", + "lib/net7.0/Microsoft.Extensions.Configuration.Abstractions.dll", + "lib/net7.0/Microsoft.Extensions.Configuration.Abstractions.xml", + "lib/net8.0/Microsoft.Extensions.Configuration.Abstractions.dll", + "lib/net8.0/Microsoft.Extensions.Configuration.Abstractions.xml", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.Abstractions.dll", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.Abstractions.xml", + "microsoft.extensions.configuration.abstractions.8.0.0.nupkg.sha512", + "microsoft.extensions.configuration.abstractions.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Configuration.Binder/8.0.0": { + "sha512": "mBMoXLsr5s1y2zOHWmKsE9veDcx8h1x/c3rz4baEdQKTeDcmQAPNbB54Pi/lhFO3K431eEq6PFbMgLaa6PHFfA==", + "type": "package", + "path": "microsoft.extensions.configuration.binder/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "analyzers/dotnet/cs/Microsoft.Extensions.Configuration.Binder.SourceGeneration.dll", + "analyzers/dotnet/cs/cs/Microsoft.Extensions.Configuration.Binder.SourceGeneration.resources.dll", + "analyzers/dotnet/cs/de/Microsoft.Extensions.Configuration.Binder.SourceGeneration.resources.dll", + "analyzers/dotnet/cs/es/Microsoft.Extensions.Configuration.Binder.SourceGeneration.resources.dll", + "analyzers/dotnet/cs/fr/Microsoft.Extensions.Configuration.Binder.SourceGeneration.resources.dll", + "analyzers/dotnet/cs/it/Microsoft.Extensions.Configuration.Binder.SourceGeneration.resources.dll", + "analyzers/dotnet/cs/ja/Microsoft.Extensions.Configuration.Binder.SourceGeneration.resources.dll", + "analyzers/dotnet/cs/ko/Microsoft.Extensions.Configuration.Binder.SourceGeneration.resources.dll", + "analyzers/dotnet/cs/pl/Microsoft.Extensions.Configuration.Binder.SourceGeneration.resources.dll", + "analyzers/dotnet/cs/pt-BR/Microsoft.Extensions.Configuration.Binder.SourceGeneration.resources.dll", + "analyzers/dotnet/cs/ru/Microsoft.Extensions.Configuration.Binder.SourceGeneration.resources.dll", + "analyzers/dotnet/cs/tr/Microsoft.Extensions.Configuration.Binder.SourceGeneration.resources.dll", + "analyzers/dotnet/cs/zh-Hans/Microsoft.Extensions.Configuration.Binder.SourceGeneration.resources.dll", + "analyzers/dotnet/cs/zh-Hant/Microsoft.Extensions.Configuration.Binder.SourceGeneration.resources.dll", + "buildTransitive/netstandard2.0/Microsoft.Extensions.Configuration.Binder.targets", + "lib/net462/Microsoft.Extensions.Configuration.Binder.dll", + "lib/net462/Microsoft.Extensions.Configuration.Binder.xml", + "lib/net6.0/Microsoft.Extensions.Configuration.Binder.dll", + "lib/net6.0/Microsoft.Extensions.Configuration.Binder.xml", + "lib/net7.0/Microsoft.Extensions.Configuration.Binder.dll", + "lib/net7.0/Microsoft.Extensions.Configuration.Binder.xml", + "lib/net8.0/Microsoft.Extensions.Configuration.Binder.dll", + "lib/net8.0/Microsoft.Extensions.Configuration.Binder.xml", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.Binder.dll", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.Binder.xml", + "microsoft.extensions.configuration.binder.8.0.0.nupkg.sha512", + "microsoft.extensions.configuration.binder.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Configuration.CommandLine/8.0.0": { + "sha512": "NZuZMz3Q8Z780nKX3ifV1fE7lS+6pynDHK71OfU4OZ1ItgvDOhyOC7E6z+JMZrAj63zRpwbdldYFk499t3+1dQ==", + "type": "package", + "path": "microsoft.extensions.configuration.commandline/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Configuration.CommandLine.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Configuration.CommandLine.targets", + "lib/net462/Microsoft.Extensions.Configuration.CommandLine.dll", + "lib/net462/Microsoft.Extensions.Configuration.CommandLine.xml", + "lib/net6.0/Microsoft.Extensions.Configuration.CommandLine.dll", + "lib/net6.0/Microsoft.Extensions.Configuration.CommandLine.xml", + "lib/net7.0/Microsoft.Extensions.Configuration.CommandLine.dll", + "lib/net7.0/Microsoft.Extensions.Configuration.CommandLine.xml", + "lib/net8.0/Microsoft.Extensions.Configuration.CommandLine.dll", + "lib/net8.0/Microsoft.Extensions.Configuration.CommandLine.xml", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.CommandLine.dll", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.CommandLine.xml", + "microsoft.extensions.configuration.commandline.8.0.0.nupkg.sha512", + "microsoft.extensions.configuration.commandline.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Configuration.EnvironmentVariables/8.0.0": { + "sha512": "plvZ0ZIpq+97gdPNNvhwvrEZ92kNml9hd1pe3idMA7svR0PztdzVLkoWLcRFgySYXUJc3kSM3Xw3mNFMo/bxRA==", + "type": "package", + "path": "microsoft.extensions.configuration.environmentvariables/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Configuration.EnvironmentVariables.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Configuration.EnvironmentVariables.targets", + "lib/net462/Microsoft.Extensions.Configuration.EnvironmentVariables.dll", + "lib/net462/Microsoft.Extensions.Configuration.EnvironmentVariables.xml", + "lib/net6.0/Microsoft.Extensions.Configuration.EnvironmentVariables.dll", + "lib/net6.0/Microsoft.Extensions.Configuration.EnvironmentVariables.xml", + "lib/net7.0/Microsoft.Extensions.Configuration.EnvironmentVariables.dll", + "lib/net7.0/Microsoft.Extensions.Configuration.EnvironmentVariables.xml", + "lib/net8.0/Microsoft.Extensions.Configuration.EnvironmentVariables.dll", + "lib/net8.0/Microsoft.Extensions.Configuration.EnvironmentVariables.xml", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.EnvironmentVariables.dll", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.EnvironmentVariables.xml", + "microsoft.extensions.configuration.environmentvariables.8.0.0.nupkg.sha512", + "microsoft.extensions.configuration.environmentvariables.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Configuration.FileExtensions/8.0.0": { + "sha512": "McP+Lz/EKwvtCv48z0YImw+L1gi1gy5rHhNaNIY2CrjloV+XY8gydT8DjMR6zWeL13AFK+DioVpppwAuO1Gi1w==", + "type": "package", + "path": "microsoft.extensions.configuration.fileextensions/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Configuration.FileExtensions.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Configuration.FileExtensions.targets", + "lib/net462/Microsoft.Extensions.Configuration.FileExtensions.dll", + "lib/net462/Microsoft.Extensions.Configuration.FileExtensions.xml", + "lib/net6.0/Microsoft.Extensions.Configuration.FileExtensions.dll", + "lib/net6.0/Microsoft.Extensions.Configuration.FileExtensions.xml", + "lib/net7.0/Microsoft.Extensions.Configuration.FileExtensions.dll", + "lib/net7.0/Microsoft.Extensions.Configuration.FileExtensions.xml", + "lib/net8.0/Microsoft.Extensions.Configuration.FileExtensions.dll", + "lib/net8.0/Microsoft.Extensions.Configuration.FileExtensions.xml", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.FileExtensions.dll", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.FileExtensions.xml", + "microsoft.extensions.configuration.fileextensions.8.0.0.nupkg.sha512", + "microsoft.extensions.configuration.fileextensions.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Configuration.Json/8.0.0": { + "sha512": "C2wqUoh9OmRL1akaCcKSTmRU8z0kckfImG7zLNI8uyi47Lp+zd5LWAD17waPQEqCz3ioWOCrFUo+JJuoeZLOBw==", + "type": "package", + "path": "microsoft.extensions.configuration.json/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Configuration.Json.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Configuration.Json.targets", + "lib/net462/Microsoft.Extensions.Configuration.Json.dll", + "lib/net462/Microsoft.Extensions.Configuration.Json.xml", + "lib/net6.0/Microsoft.Extensions.Configuration.Json.dll", + "lib/net6.0/Microsoft.Extensions.Configuration.Json.xml", + "lib/net7.0/Microsoft.Extensions.Configuration.Json.dll", + "lib/net7.0/Microsoft.Extensions.Configuration.Json.xml", + "lib/net8.0/Microsoft.Extensions.Configuration.Json.dll", + "lib/net8.0/Microsoft.Extensions.Configuration.Json.xml", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.Json.dll", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.Json.xml", + "lib/netstandard2.1/Microsoft.Extensions.Configuration.Json.dll", + "lib/netstandard2.1/Microsoft.Extensions.Configuration.Json.xml", + "microsoft.extensions.configuration.json.8.0.0.nupkg.sha512", + "microsoft.extensions.configuration.json.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Configuration.UserSecrets/8.0.0": { + "sha512": "ihDHu2dJYQird9pl2CbdwuNDfvCZdOS0S7SPlNfhPt0B81UTT+yyZKz2pimFZGUp3AfuBRnqUCxB2SjsZKHVUw==", + "type": "package", + "path": "microsoft.extensions.configuration.usersecrets/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Configuration.UserSecrets.targets", + "buildTransitive/net462/Microsoft.Extensions.Configuration.UserSecrets.props", + "buildTransitive/net462/Microsoft.Extensions.Configuration.UserSecrets.targets", + "buildTransitive/net6.0/Microsoft.Extensions.Configuration.UserSecrets.props", + "buildTransitive/net6.0/Microsoft.Extensions.Configuration.UserSecrets.targets", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Configuration.UserSecrets.targets", + "buildTransitive/netstandard2.0/Microsoft.Extensions.Configuration.UserSecrets.props", + "buildTransitive/netstandard2.0/Microsoft.Extensions.Configuration.UserSecrets.targets", + "lib/net462/Microsoft.Extensions.Configuration.UserSecrets.dll", + "lib/net462/Microsoft.Extensions.Configuration.UserSecrets.xml", + "lib/net6.0/Microsoft.Extensions.Configuration.UserSecrets.dll", + "lib/net6.0/Microsoft.Extensions.Configuration.UserSecrets.xml", + "lib/net7.0/Microsoft.Extensions.Configuration.UserSecrets.dll", + "lib/net7.0/Microsoft.Extensions.Configuration.UserSecrets.xml", + "lib/net8.0/Microsoft.Extensions.Configuration.UserSecrets.dll", + "lib/net8.0/Microsoft.Extensions.Configuration.UserSecrets.xml", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.UserSecrets.dll", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.UserSecrets.xml", + "microsoft.extensions.configuration.usersecrets.8.0.0.nupkg.sha512", + "microsoft.extensions.configuration.usersecrets.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.DependencyInjection/8.0.0": { + "sha512": "V8S3bsm50ig6JSyrbcJJ8bW2b9QLGouz+G1miK3UTaOWmMtFwNNNzUf4AleyDWUmTrWMLNnFSLEQtxmxgNQnNQ==", + "type": "package", + "path": "microsoft.extensions.dependencyinjection/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.DependencyInjection.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.DependencyInjection.targets", + "lib/net462/Microsoft.Extensions.DependencyInjection.dll", + "lib/net462/Microsoft.Extensions.DependencyInjection.xml", + "lib/net6.0/Microsoft.Extensions.DependencyInjection.dll", + "lib/net6.0/Microsoft.Extensions.DependencyInjection.xml", + "lib/net7.0/Microsoft.Extensions.DependencyInjection.dll", + "lib/net7.0/Microsoft.Extensions.DependencyInjection.xml", + "lib/net8.0/Microsoft.Extensions.DependencyInjection.dll", + "lib/net8.0/Microsoft.Extensions.DependencyInjection.xml", + "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.dll", + "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.xml", + "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.dll", + "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.xml", + "microsoft.extensions.dependencyinjection.8.0.0.nupkg.sha512", + "microsoft.extensions.dependencyinjection.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.DependencyInjection.Abstractions/8.0.0": { + "sha512": "cjWrLkJXK0rs4zofsK4bSdg+jhDLTaxrkXu4gS6Y7MAlCvRyNNgwY/lJi5RDlQOnSZweHqoyvgvbdvQsRIW+hg==", + "type": "package", + "path": "microsoft.extensions.dependencyinjection.abstractions/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.DependencyInjection.Abstractions.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.DependencyInjection.Abstractions.targets", + "lib/net462/Microsoft.Extensions.DependencyInjection.Abstractions.dll", + "lib/net462/Microsoft.Extensions.DependencyInjection.Abstractions.xml", + "lib/net6.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", + "lib/net6.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", + "lib/net7.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", + "lib/net7.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", + "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", + "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", + "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", + "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", + "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.Abstractions.dll", + "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.Abstractions.xml", + "microsoft.extensions.dependencyinjection.abstractions.8.0.0.nupkg.sha512", + "microsoft.extensions.dependencyinjection.abstractions.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.DependencyModel/6.0.0": { + "sha512": "TD5QHg98m3+QhgEV1YVoNMl5KtBw/4rjfxLHO0e/YV9bPUBDKntApP4xdrVtGgCeQZHVfC2EXIGsdpRNrr87Pg==", + "type": "package", + "path": "microsoft.extensions.dependencymodel/6.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/net461/Microsoft.Extensions.DependencyModel.dll", + "lib/net461/Microsoft.Extensions.DependencyModel.xml", + "lib/netstandard2.0/Microsoft.Extensions.DependencyModel.dll", + "lib/netstandard2.0/Microsoft.Extensions.DependencyModel.xml", + "microsoft.extensions.dependencymodel.6.0.0.nupkg.sha512", + "microsoft.extensions.dependencymodel.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Diagnostics/8.0.0": { + "sha512": "3PZp/YSkIXrF7QK7PfC1bkyRYwqOHpWFad8Qx+4wkuumAeXo1NHaxpS9LboNA9OvNSAu+QOVlXbMyoY+pHSqcw==", + "type": "package", + "path": "microsoft.extensions.diagnostics/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Diagnostics.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Diagnostics.targets", + "lib/net462/Microsoft.Extensions.Diagnostics.dll", + "lib/net462/Microsoft.Extensions.Diagnostics.xml", + "lib/net6.0/Microsoft.Extensions.Diagnostics.dll", + "lib/net6.0/Microsoft.Extensions.Diagnostics.xml", + "lib/net7.0/Microsoft.Extensions.Diagnostics.dll", + "lib/net7.0/Microsoft.Extensions.Diagnostics.xml", + "lib/net8.0/Microsoft.Extensions.Diagnostics.dll", + "lib/net8.0/Microsoft.Extensions.Diagnostics.xml", + "lib/netstandard2.0/Microsoft.Extensions.Diagnostics.dll", + "lib/netstandard2.0/Microsoft.Extensions.Diagnostics.xml", + "microsoft.extensions.diagnostics.8.0.0.nupkg.sha512", + "microsoft.extensions.diagnostics.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Diagnostics.Abstractions/8.0.0": { + "sha512": "JHYCQG7HmugNYUhOl368g+NMxYE/N/AiclCYRNlgCY9eVyiBkOHMwK4x60RYMxv9EL3+rmj1mqHvdCiPpC+D4Q==", + "type": "package", + "path": "microsoft.extensions.diagnostics.abstractions/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Diagnostics.Abstractions.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Diagnostics.Abstractions.targets", + "lib/net462/Microsoft.Extensions.Diagnostics.Abstractions.dll", + "lib/net462/Microsoft.Extensions.Diagnostics.Abstractions.xml", + "lib/net6.0/Microsoft.Extensions.Diagnostics.Abstractions.dll", + "lib/net6.0/Microsoft.Extensions.Diagnostics.Abstractions.xml", + "lib/net7.0/Microsoft.Extensions.Diagnostics.Abstractions.dll", + "lib/net7.0/Microsoft.Extensions.Diagnostics.Abstractions.xml", + "lib/net8.0/Microsoft.Extensions.Diagnostics.Abstractions.dll", + "lib/net8.0/Microsoft.Extensions.Diagnostics.Abstractions.xml", + "lib/netstandard2.0/Microsoft.Extensions.Diagnostics.Abstractions.dll", + "lib/netstandard2.0/Microsoft.Extensions.Diagnostics.Abstractions.xml", + "microsoft.extensions.diagnostics.abstractions.8.0.0.nupkg.sha512", + "microsoft.extensions.diagnostics.abstractions.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.FileProviders.Abstractions/8.0.0": { + "sha512": "ZbaMlhJlpisjuWbvXr4LdAst/1XxH3vZ6A0BsgTphZ2L4PGuxRLz7Jr/S7mkAAnOn78Vu0fKhEgNF5JO3zfjqQ==", + "type": "package", + "path": "microsoft.extensions.fileproviders.abstractions/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.FileProviders.Abstractions.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.FileProviders.Abstractions.targets", + "lib/net462/Microsoft.Extensions.FileProviders.Abstractions.dll", + "lib/net462/Microsoft.Extensions.FileProviders.Abstractions.xml", + "lib/net6.0/Microsoft.Extensions.FileProviders.Abstractions.dll", + "lib/net6.0/Microsoft.Extensions.FileProviders.Abstractions.xml", + "lib/net8.0/Microsoft.Extensions.FileProviders.Abstractions.dll", + "lib/net8.0/Microsoft.Extensions.FileProviders.Abstractions.xml", + "lib/netstandard2.0/Microsoft.Extensions.FileProviders.Abstractions.dll", + "lib/netstandard2.0/Microsoft.Extensions.FileProviders.Abstractions.xml", + "microsoft.extensions.fileproviders.abstractions.8.0.0.nupkg.sha512", + "microsoft.extensions.fileproviders.abstractions.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.FileProviders.Physical/8.0.0": { + "sha512": "UboiXxpPUpwulHvIAVE36Knq0VSHaAmfrFkegLyBZeaADuKezJ/AIXYAW8F5GBlGk/VaibN2k/Zn1ca8YAfVdA==", + "type": "package", + "path": "microsoft.extensions.fileproviders.physical/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.FileProviders.Physical.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.FileProviders.Physical.targets", + "lib/net462/Microsoft.Extensions.FileProviders.Physical.dll", + "lib/net462/Microsoft.Extensions.FileProviders.Physical.xml", + "lib/net6.0/Microsoft.Extensions.FileProviders.Physical.dll", + "lib/net6.0/Microsoft.Extensions.FileProviders.Physical.xml", + "lib/net7.0/Microsoft.Extensions.FileProviders.Physical.dll", + "lib/net7.0/Microsoft.Extensions.FileProviders.Physical.xml", + "lib/net8.0/Microsoft.Extensions.FileProviders.Physical.dll", + "lib/net8.0/Microsoft.Extensions.FileProviders.Physical.xml", + "lib/netstandard2.0/Microsoft.Extensions.FileProviders.Physical.dll", + "lib/netstandard2.0/Microsoft.Extensions.FileProviders.Physical.xml", + "microsoft.extensions.fileproviders.physical.8.0.0.nupkg.sha512", + "microsoft.extensions.fileproviders.physical.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.FileSystemGlobbing/8.0.0": { + "sha512": "OK+670i7esqlQrPjdIKRbsyMCe9g5kSLpRRQGSr4Q58AOYEe/hCnfLZprh7viNisSUUQZmMrbbuDaIrP+V1ebQ==", + "type": "package", + "path": "microsoft.extensions.filesystemglobbing/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.FileSystemGlobbing.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.FileSystemGlobbing.targets", + "lib/net462/Microsoft.Extensions.FileSystemGlobbing.dll", + "lib/net462/Microsoft.Extensions.FileSystemGlobbing.xml", + "lib/net6.0/Microsoft.Extensions.FileSystemGlobbing.dll", + "lib/net6.0/Microsoft.Extensions.FileSystemGlobbing.xml", + "lib/net7.0/Microsoft.Extensions.FileSystemGlobbing.dll", + "lib/net7.0/Microsoft.Extensions.FileSystemGlobbing.xml", + "lib/net8.0/Microsoft.Extensions.FileSystemGlobbing.dll", + "lib/net8.0/Microsoft.Extensions.FileSystemGlobbing.xml", + "lib/netstandard2.0/Microsoft.Extensions.FileSystemGlobbing.dll", + "lib/netstandard2.0/Microsoft.Extensions.FileSystemGlobbing.xml", + "microsoft.extensions.filesystemglobbing.8.0.0.nupkg.sha512", + "microsoft.extensions.filesystemglobbing.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Hosting/8.0.0": { + "sha512": "ItYHpdqVp5/oFLT5QqbopnkKlyFG9EW/9nhM6/yfObeKt6Su0wkBio6AizgRHGNwhJuAtlE5VIjow5JOTrip6w==", + "type": "package", + "path": "microsoft.extensions.hosting/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Hosting.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Hosting.targets", + "lib/net462/Microsoft.Extensions.Hosting.dll", + "lib/net462/Microsoft.Extensions.Hosting.xml", + "lib/net6.0/Microsoft.Extensions.Hosting.dll", + "lib/net6.0/Microsoft.Extensions.Hosting.xml", + "lib/net7.0/Microsoft.Extensions.Hosting.dll", + "lib/net7.0/Microsoft.Extensions.Hosting.xml", + "lib/net8.0/Microsoft.Extensions.Hosting.dll", + "lib/net8.0/Microsoft.Extensions.Hosting.xml", + "lib/netstandard2.0/Microsoft.Extensions.Hosting.dll", + "lib/netstandard2.0/Microsoft.Extensions.Hosting.xml", + "lib/netstandard2.1/Microsoft.Extensions.Hosting.dll", + "lib/netstandard2.1/Microsoft.Extensions.Hosting.xml", + "microsoft.extensions.hosting.8.0.0.nupkg.sha512", + "microsoft.extensions.hosting.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Hosting.Abstractions/8.0.0": { + "sha512": "AG7HWwVRdCHlaA++1oKDxLsXIBxmDpMPb3VoyOoAghEWnkUvEAdYQUwnV4jJbAaa/nMYNiEh5ByoLauZBEiovg==", + "type": "package", + "path": "microsoft.extensions.hosting.abstractions/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Hosting.Abstractions.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Hosting.Abstractions.targets", + "lib/net462/Microsoft.Extensions.Hosting.Abstractions.dll", + "lib/net462/Microsoft.Extensions.Hosting.Abstractions.xml", + "lib/net6.0/Microsoft.Extensions.Hosting.Abstractions.dll", + "lib/net6.0/Microsoft.Extensions.Hosting.Abstractions.xml", + "lib/net7.0/Microsoft.Extensions.Hosting.Abstractions.dll", + "lib/net7.0/Microsoft.Extensions.Hosting.Abstractions.xml", + "lib/net8.0/Microsoft.Extensions.Hosting.Abstractions.dll", + "lib/net8.0/Microsoft.Extensions.Hosting.Abstractions.xml", + "lib/netstandard2.0/Microsoft.Extensions.Hosting.Abstractions.dll", + "lib/netstandard2.0/Microsoft.Extensions.Hosting.Abstractions.xml", + "lib/netstandard2.1/Microsoft.Extensions.Hosting.Abstractions.dll", + "lib/netstandard2.1/Microsoft.Extensions.Hosting.Abstractions.xml", + "microsoft.extensions.hosting.abstractions.8.0.0.nupkg.sha512", + "microsoft.extensions.hosting.abstractions.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Localization.Abstractions/8.0.3": { + "sha512": "k/kUPm1FQBxcs9/vsM1eF4qIOg2Sovqh/+KUGHur5Mc0Y3OFGuoz9ktBX7LA0gPz53SZhW3W3oaSaMFFcjgM6Q==", + "type": "package", + "path": "microsoft.extensions.localization.abstractions/8.0.3", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "THIRD-PARTY-NOTICES.TXT", + "lib/net462/Microsoft.Extensions.Localization.Abstractions.dll", + "lib/net462/Microsoft.Extensions.Localization.Abstractions.xml", + "lib/net8.0/Microsoft.Extensions.Localization.Abstractions.dll", + "lib/net8.0/Microsoft.Extensions.Localization.Abstractions.xml", + "lib/netstandard2.0/Microsoft.Extensions.Localization.Abstractions.dll", + "lib/netstandard2.0/Microsoft.Extensions.Localization.Abstractions.xml", + "microsoft.extensions.localization.abstractions.8.0.3.nupkg.sha512", + "microsoft.extensions.localization.abstractions.nuspec" + ] + }, + "Microsoft.Extensions.Logging/8.0.0": { + "sha512": "tvRkov9tAJ3xP51LCv3FJ2zINmv1P8Hi8lhhtcKGqM+ImiTCC84uOPEI4z8Cdq2C3o9e+Aa0Gw0rmrsJD77W+w==", + "type": "package", + "path": "microsoft.extensions.logging/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Logging.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Logging.targets", + "lib/net462/Microsoft.Extensions.Logging.dll", + "lib/net462/Microsoft.Extensions.Logging.xml", + "lib/net6.0/Microsoft.Extensions.Logging.dll", + "lib/net6.0/Microsoft.Extensions.Logging.xml", + "lib/net7.0/Microsoft.Extensions.Logging.dll", + "lib/net7.0/Microsoft.Extensions.Logging.xml", + "lib/net8.0/Microsoft.Extensions.Logging.dll", + "lib/net8.0/Microsoft.Extensions.Logging.xml", + "lib/netstandard2.0/Microsoft.Extensions.Logging.dll", + "lib/netstandard2.0/Microsoft.Extensions.Logging.xml", + "lib/netstandard2.1/Microsoft.Extensions.Logging.dll", + "lib/netstandard2.1/Microsoft.Extensions.Logging.xml", + "microsoft.extensions.logging.8.0.0.nupkg.sha512", + "microsoft.extensions.logging.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Logging.Abstractions/8.0.0": { + "sha512": "arDBqTgFCyS0EvRV7O3MZturChstm50OJ0y9bDJvAcmEPJm0FFpFyjU/JLYyStNGGey081DvnQYlncNX5SJJGA==", + "type": "package", + "path": "microsoft.extensions.logging.abstractions/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "analyzers/dotnet/roslyn3.11/cs/Microsoft.Extensions.Logging.Generators.dll", + "analyzers/dotnet/roslyn3.11/cs/cs/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/de/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/es/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/fr/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/it/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/ja/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/ko/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/pl/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/pt-BR/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/ru/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/tr/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/zh-Hans/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/zh-Hant/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/Microsoft.Extensions.Logging.Generators.dll", + "analyzers/dotnet/roslyn4.0/cs/cs/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/de/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/es/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/fr/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/it/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/ja/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/ko/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/pl/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/pt-BR/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/ru/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/tr/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/zh-Hans/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/zh-Hant/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/Microsoft.Extensions.Logging.Generators.dll", + "analyzers/dotnet/roslyn4.4/cs/cs/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/de/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/es/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/fr/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/it/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ja/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ko/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/pl/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/pt-BR/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ru/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/tr/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/zh-Hans/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/zh-Hant/Microsoft.Extensions.Logging.Generators.resources.dll", + "buildTransitive/net461/Microsoft.Extensions.Logging.Abstractions.targets", + "buildTransitive/net462/Microsoft.Extensions.Logging.Abstractions.targets", + "buildTransitive/net6.0/Microsoft.Extensions.Logging.Abstractions.targets", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Logging.Abstractions.targets", + "buildTransitive/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.targets", + "lib/net462/Microsoft.Extensions.Logging.Abstractions.dll", + "lib/net462/Microsoft.Extensions.Logging.Abstractions.xml", + "lib/net6.0/Microsoft.Extensions.Logging.Abstractions.dll", + "lib/net6.0/Microsoft.Extensions.Logging.Abstractions.xml", + "lib/net7.0/Microsoft.Extensions.Logging.Abstractions.dll", + "lib/net7.0/Microsoft.Extensions.Logging.Abstractions.xml", + "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll", + "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.xml", + "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.dll", + "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.xml", + "microsoft.extensions.logging.abstractions.8.0.0.nupkg.sha512", + "microsoft.extensions.logging.abstractions.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Logging.Configuration/8.0.0": { + "sha512": "ixXXV0G/12g6MXK65TLngYN9V5hQQRuV+fZi882WIoVJT7h5JvoYoxTEwCgdqwLjSneqh1O+66gM8sMr9z/rsQ==", + "type": "package", + "path": "microsoft.extensions.logging.configuration/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Logging.Configuration.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Logging.Configuration.targets", + "lib/net462/Microsoft.Extensions.Logging.Configuration.dll", + "lib/net462/Microsoft.Extensions.Logging.Configuration.xml", + "lib/net6.0/Microsoft.Extensions.Logging.Configuration.dll", + "lib/net6.0/Microsoft.Extensions.Logging.Configuration.xml", + "lib/net7.0/Microsoft.Extensions.Logging.Configuration.dll", + "lib/net7.0/Microsoft.Extensions.Logging.Configuration.xml", + "lib/net8.0/Microsoft.Extensions.Logging.Configuration.dll", + "lib/net8.0/Microsoft.Extensions.Logging.Configuration.xml", + "lib/netstandard2.0/Microsoft.Extensions.Logging.Configuration.dll", + "lib/netstandard2.0/Microsoft.Extensions.Logging.Configuration.xml", + "microsoft.extensions.logging.configuration.8.0.0.nupkg.sha512", + "microsoft.extensions.logging.configuration.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Logging.Console/8.0.0": { + "sha512": "e+48o7DztoYog+PY430lPxrM4mm3PbA6qucvQtUDDwVo4MO+ejMw7YGc/o2rnxbxj4isPxdfKFzTxvXMwAz83A==", + "type": "package", + "path": "microsoft.extensions.logging.console/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Logging.Console.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Logging.Console.targets", + "lib/net462/Microsoft.Extensions.Logging.Console.dll", + "lib/net462/Microsoft.Extensions.Logging.Console.xml", + "lib/net6.0/Microsoft.Extensions.Logging.Console.dll", + "lib/net6.0/Microsoft.Extensions.Logging.Console.xml", + "lib/net7.0/Microsoft.Extensions.Logging.Console.dll", + "lib/net7.0/Microsoft.Extensions.Logging.Console.xml", + "lib/net8.0/Microsoft.Extensions.Logging.Console.dll", + "lib/net8.0/Microsoft.Extensions.Logging.Console.xml", + "lib/netstandard2.0/Microsoft.Extensions.Logging.Console.dll", + "lib/netstandard2.0/Microsoft.Extensions.Logging.Console.xml", + "microsoft.extensions.logging.console.8.0.0.nupkg.sha512", + "microsoft.extensions.logging.console.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Logging.Debug/8.0.0": { + "sha512": "dt0x21qBdudHLW/bjMJpkixv858RRr8eSomgVbU8qljOyfrfDGi1JQvpF9w8S7ziRPtRKisuWaOwFxJM82GxeA==", + "type": "package", + "path": "microsoft.extensions.logging.debug/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Logging.Debug.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Logging.Debug.targets", + "lib/net462/Microsoft.Extensions.Logging.Debug.dll", + "lib/net462/Microsoft.Extensions.Logging.Debug.xml", + "lib/net6.0/Microsoft.Extensions.Logging.Debug.dll", + "lib/net6.0/Microsoft.Extensions.Logging.Debug.xml", + "lib/net7.0/Microsoft.Extensions.Logging.Debug.dll", + "lib/net7.0/Microsoft.Extensions.Logging.Debug.xml", + "lib/net8.0/Microsoft.Extensions.Logging.Debug.dll", + "lib/net8.0/Microsoft.Extensions.Logging.Debug.xml", + "lib/netstandard2.0/Microsoft.Extensions.Logging.Debug.dll", + "lib/netstandard2.0/Microsoft.Extensions.Logging.Debug.xml", + "microsoft.extensions.logging.debug.8.0.0.nupkg.sha512", + "microsoft.extensions.logging.debug.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Logging.EventLog/8.0.0": { + "sha512": "3X9D3sl7EmOu7vQp5MJrmIJBl5XSdOhZPYXUeFfYa6Nnm9+tok8x3t3IVPLhm7UJtPOU61ohFchw8rNm9tIYOQ==", + "type": "package", + "path": "microsoft.extensions.logging.eventlog/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Logging.EventLog.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Logging.EventLog.targets", + "lib/net462/Microsoft.Extensions.Logging.EventLog.dll", + "lib/net462/Microsoft.Extensions.Logging.EventLog.xml", + "lib/net6.0/Microsoft.Extensions.Logging.EventLog.dll", + "lib/net6.0/Microsoft.Extensions.Logging.EventLog.xml", + "lib/net7.0/Microsoft.Extensions.Logging.EventLog.dll", + "lib/net7.0/Microsoft.Extensions.Logging.EventLog.xml", + "lib/net8.0/Microsoft.Extensions.Logging.EventLog.dll", + "lib/net8.0/Microsoft.Extensions.Logging.EventLog.xml", + "lib/netstandard2.0/Microsoft.Extensions.Logging.EventLog.dll", + "lib/netstandard2.0/Microsoft.Extensions.Logging.EventLog.xml", + "microsoft.extensions.logging.eventlog.8.0.0.nupkg.sha512", + "microsoft.extensions.logging.eventlog.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Logging.EventSource/8.0.0": { + "sha512": "oKcPMrw+luz2DUAKhwFXrmFikZWnyc8l2RKoQwqU3KIZZjcfoJE0zRHAnqATfhRZhtcbjl/QkiY2Xjxp0xu+6w==", + "type": "package", + "path": "microsoft.extensions.logging.eventsource/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Logging.EventSource.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Logging.EventSource.targets", + "lib/net462/Microsoft.Extensions.Logging.EventSource.dll", + "lib/net462/Microsoft.Extensions.Logging.EventSource.xml", + "lib/net6.0/Microsoft.Extensions.Logging.EventSource.dll", + "lib/net6.0/Microsoft.Extensions.Logging.EventSource.xml", + "lib/net7.0/Microsoft.Extensions.Logging.EventSource.dll", + "lib/net7.0/Microsoft.Extensions.Logging.EventSource.xml", + "lib/net8.0/Microsoft.Extensions.Logging.EventSource.dll", + "lib/net8.0/Microsoft.Extensions.Logging.EventSource.xml", + "lib/netstandard2.0/Microsoft.Extensions.Logging.EventSource.dll", + "lib/netstandard2.0/Microsoft.Extensions.Logging.EventSource.xml", + "microsoft.extensions.logging.eventsource.8.0.0.nupkg.sha512", + "microsoft.extensions.logging.eventsource.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Options/8.0.0": { + "sha512": "JOVOfqpnqlVLUzINQ2fox8evY2SKLYJ3BV8QDe/Jyp21u1T7r45x/R/5QdteURMR5r01GxeJSBBUOCOyaNXA3g==", + "type": "package", + "path": "microsoft.extensions.options/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "analyzers/dotnet/roslyn4.4/cs/Microsoft.Extensions.Options.SourceGeneration.dll", + "analyzers/dotnet/roslyn4.4/cs/cs/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/de/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/es/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/fr/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/it/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ja/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ko/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/pl/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/pt-BR/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ru/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/tr/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/zh-Hans/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/zh-Hant/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "buildTransitive/net461/Microsoft.Extensions.Options.targets", + "buildTransitive/net462/Microsoft.Extensions.Options.targets", + "buildTransitive/net6.0/Microsoft.Extensions.Options.targets", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Options.targets", + "buildTransitive/netstandard2.0/Microsoft.Extensions.Options.targets", + "lib/net462/Microsoft.Extensions.Options.dll", + "lib/net462/Microsoft.Extensions.Options.xml", + "lib/net6.0/Microsoft.Extensions.Options.dll", + "lib/net6.0/Microsoft.Extensions.Options.xml", + "lib/net7.0/Microsoft.Extensions.Options.dll", + "lib/net7.0/Microsoft.Extensions.Options.xml", + "lib/net8.0/Microsoft.Extensions.Options.dll", + "lib/net8.0/Microsoft.Extensions.Options.xml", + "lib/netstandard2.0/Microsoft.Extensions.Options.dll", + "lib/netstandard2.0/Microsoft.Extensions.Options.xml", + "lib/netstandard2.1/Microsoft.Extensions.Options.dll", + "lib/netstandard2.1/Microsoft.Extensions.Options.xml", + "microsoft.extensions.options.8.0.0.nupkg.sha512", + "microsoft.extensions.options.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Options.ConfigurationExtensions/8.0.0": { + "sha512": "0f4DMRqEd50zQh+UyJc+/HiBsZ3vhAQALgdkcQEalSH1L2isdC7Yj54M3cyo5e+BeO5fcBQ7Dxly8XiBBcvRgw==", + "type": "package", + "path": "microsoft.extensions.options.configurationextensions/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Options.ConfigurationExtensions.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Options.ConfigurationExtensions.targets", + "lib/net462/Microsoft.Extensions.Options.ConfigurationExtensions.dll", + "lib/net462/Microsoft.Extensions.Options.ConfigurationExtensions.xml", + "lib/net6.0/Microsoft.Extensions.Options.ConfigurationExtensions.dll", + "lib/net6.0/Microsoft.Extensions.Options.ConfigurationExtensions.xml", + "lib/net7.0/Microsoft.Extensions.Options.ConfigurationExtensions.dll", + "lib/net7.0/Microsoft.Extensions.Options.ConfigurationExtensions.xml", + "lib/net8.0/Microsoft.Extensions.Options.ConfigurationExtensions.dll", + "lib/net8.0/Microsoft.Extensions.Options.ConfigurationExtensions.xml", + "lib/netstandard2.0/Microsoft.Extensions.Options.ConfigurationExtensions.dll", + "lib/netstandard2.0/Microsoft.Extensions.Options.ConfigurationExtensions.xml", + "microsoft.extensions.options.configurationextensions.8.0.0.nupkg.sha512", + "microsoft.extensions.options.configurationextensions.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Primitives/8.0.0": { + "sha512": "bXJEZrW9ny8vjMF1JV253WeLhpEVzFo1lyaZu1vQ4ZxWUlVvknZ/+ftFgVheLubb4eZPSwwxBeqS1JkCOjxd8g==", + "type": "package", + "path": "microsoft.extensions.primitives/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Primitives.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Primitives.targets", + "lib/net462/Microsoft.Extensions.Primitives.dll", + "lib/net462/Microsoft.Extensions.Primitives.xml", + "lib/net6.0/Microsoft.Extensions.Primitives.dll", + "lib/net6.0/Microsoft.Extensions.Primitives.xml", + "lib/net7.0/Microsoft.Extensions.Primitives.dll", + "lib/net7.0/Microsoft.Extensions.Primitives.xml", + "lib/net8.0/Microsoft.Extensions.Primitives.dll", + "lib/net8.0/Microsoft.Extensions.Primitives.xml", + "lib/netstandard2.0/Microsoft.Extensions.Primitives.dll", + "lib/netstandard2.0/Microsoft.Extensions.Primitives.xml", + "microsoft.extensions.primitives.8.0.0.nupkg.sha512", + "microsoft.extensions.primitives.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Scrutor/4.2.2": { + "sha512": "t5VIYA7WJXoJJo7s4DoHakMGwTu+MeEnZumMOhTCH7kz9xWha24G7dJNxWrHPlu0ZdZAS4jDZCxxAnyaBh7uYw==", + "type": "package", + "path": "scrutor/4.2.2", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net461/Scrutor.dll", + "lib/net461/Scrutor.pdb", + "lib/net461/Scrutor.xml", + "lib/net6.0/Scrutor.dll", + "lib/net6.0/Scrutor.pdb", + "lib/net6.0/Scrutor.xml", + "lib/netcoreapp3.1/Scrutor.dll", + "lib/netcoreapp3.1/Scrutor.pdb", + "lib/netcoreapp3.1/Scrutor.xml", + "lib/netstandard2.0/Scrutor.dll", + "lib/netstandard2.0/Scrutor.pdb", + "lib/netstandard2.0/Scrutor.xml", + "scrutor.4.2.2.nupkg.sha512", + "scrutor.nuspec" + ] + }, + "Serilog/3.1.1": { + "sha512": "P6G4/4Kt9bT635bhuwdXlJ2SCqqn2nhh4gqFqQueCOr9bK/e7W9ll/IoX1Ter948cV2Z/5+5v8pAfJYUISY03A==", + "type": "package", + "path": "serilog/3.1.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "icon.png", + "lib/net462/Serilog.dll", + "lib/net462/Serilog.xml", + "lib/net471/Serilog.dll", + "lib/net471/Serilog.xml", + "lib/net5.0/Serilog.dll", + "lib/net5.0/Serilog.xml", + "lib/net6.0/Serilog.dll", + "lib/net6.0/Serilog.xml", + "lib/net7.0/Serilog.dll", + "lib/net7.0/Serilog.xml", + "lib/netstandard2.0/Serilog.dll", + "lib/netstandard2.0/Serilog.xml", + "lib/netstandard2.1/Serilog.dll", + "lib/netstandard2.1/Serilog.xml", + "serilog.3.1.1.nupkg.sha512", + "serilog.nuspec" + ] + }, + "Serilog.Extensions.Logging/8.0.0": { + "sha512": "YEAMWu1UnWgf1c1KP85l1SgXGfiVo0Rz6x08pCiPOIBt2Qe18tcZLvdBUuV5o1QHvrs8FAry9wTIhgBRtjIlEg==", + "type": "package", + "path": "serilog.extensions.logging/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "lib/net462/Serilog.Extensions.Logging.dll", + "lib/net462/Serilog.Extensions.Logging.xml", + "lib/net6.0/Serilog.Extensions.Logging.dll", + "lib/net6.0/Serilog.Extensions.Logging.xml", + "lib/net7.0/Serilog.Extensions.Logging.dll", + "lib/net7.0/Serilog.Extensions.Logging.xml", + "lib/net8.0/Serilog.Extensions.Logging.dll", + "lib/net8.0/Serilog.Extensions.Logging.xml", + "lib/netstandard2.0/Serilog.Extensions.Logging.dll", + "lib/netstandard2.0/Serilog.Extensions.Logging.xml", + "lib/netstandard2.1/Serilog.Extensions.Logging.dll", + "lib/netstandard2.1/Serilog.Extensions.Logging.xml", + "serilog-extension-nuget.png", + "serilog.extensions.logging.8.0.0.nupkg.sha512", + "serilog.extensions.logging.nuspec" + ] + }, + "Serilog.Sinks.Console/5.0.0": { + "sha512": "IZ6bn79k+3SRXOBpwSOClUHikSkp2toGPCZ0teUkscv4dpDg9E2R2xVsNkLmwddE4OpNVO3N0xiYsAH556vN8Q==", + "type": "package", + "path": "serilog.sinks.console/5.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "icon.png", + "lib/net462/Serilog.Sinks.Console.dll", + "lib/net462/Serilog.Sinks.Console.xml", + "lib/net471/Serilog.Sinks.Console.dll", + "lib/net471/Serilog.Sinks.Console.xml", + "lib/net5.0/Serilog.Sinks.Console.dll", + "lib/net5.0/Serilog.Sinks.Console.xml", + "lib/net6.0/Serilog.Sinks.Console.dll", + "lib/net6.0/Serilog.Sinks.Console.xml", + "lib/net7.0/Serilog.Sinks.Console.dll", + "lib/net7.0/Serilog.Sinks.Console.xml", + "lib/netstandard2.0/Serilog.Sinks.Console.dll", + "lib/netstandard2.0/Serilog.Sinks.Console.xml", + "lib/netstandard2.1/Serilog.Sinks.Console.dll", + "lib/netstandard2.1/Serilog.Sinks.Console.xml", + "serilog.sinks.console.5.0.0.nupkg.sha512", + "serilog.sinks.console.nuspec" + ] + }, + "Serilog.Sinks.File/5.0.0": { + "sha512": "uwV5hdhWPwUH1szhO8PJpFiahqXmzPzJT/sOijH/kFgUx+cyoDTMM8MHD0adw9+Iem6itoibbUXHYslzXsLEAg==", + "type": "package", + "path": "serilog.sinks.file/5.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "images/icon.png", + "lib/net45/Serilog.Sinks.File.dll", + "lib/net45/Serilog.Sinks.File.pdb", + "lib/net45/Serilog.Sinks.File.xml", + "lib/net5.0/Serilog.Sinks.File.dll", + "lib/net5.0/Serilog.Sinks.File.pdb", + "lib/net5.0/Serilog.Sinks.File.xml", + "lib/netstandard1.3/Serilog.Sinks.File.dll", + "lib/netstandard1.3/Serilog.Sinks.File.pdb", + "lib/netstandard1.3/Serilog.Sinks.File.xml", + "lib/netstandard2.0/Serilog.Sinks.File.dll", + "lib/netstandard2.0/Serilog.Sinks.File.pdb", + "lib/netstandard2.0/Serilog.Sinks.File.xml", + "lib/netstandard2.1/Serilog.Sinks.File.dll", + "lib/netstandard2.1/Serilog.Sinks.File.pdb", + "lib/netstandard2.1/Serilog.Sinks.File.xml", + "serilog.sinks.file.5.0.0.nupkg.sha512", + "serilog.sinks.file.nuspec" + ] + }, + "System.Buffers/4.5.1": { + "sha512": "Rw7ijyl1qqRS0YQD/WycNst8hUUMgrMH4FCn1nNm27M4VxchZ1js3fVjQaANHO5f3sN4isvP4a+Met9Y4YomAg==", + "type": "package", + "path": "system.buffers/4.5.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/net461/System.Buffers.dll", + "lib/net461/System.Buffers.xml", + "lib/netcoreapp2.0/_._", + "lib/netstandard1.1/System.Buffers.dll", + "lib/netstandard1.1/System.Buffers.xml", + "lib/netstandard2.0/System.Buffers.dll", + "lib/netstandard2.0/System.Buffers.xml", + "lib/uap10.0.16299/_._", + "ref/net45/System.Buffers.dll", + "ref/net45/System.Buffers.xml", + "ref/netcoreapp2.0/_._", + "ref/netstandard1.1/System.Buffers.dll", + "ref/netstandard1.1/System.Buffers.xml", + "ref/netstandard2.0/System.Buffers.dll", + "ref/netstandard2.0/System.Buffers.xml", + "ref/uap10.0.16299/_._", + "system.buffers.4.5.1.nupkg.sha512", + "system.buffers.nuspec", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "System.Data.DataSetExtensions/4.5.0": { + "sha512": "221clPs1445HkTBZPL+K9sDBdJRB8UN8rgjO3ztB0CQ26z//fmJXtlsr6whGatscsKGBrhJl5bwJuKSA8mwFOw==", + "type": "package", + "path": "system.data.datasetextensions/4.5.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/net45/_._", + "lib/netstandard2.0/System.Data.DataSetExtensions.dll", + "ref/net45/_._", + "ref/netstandard2.0/System.Data.DataSetExtensions.dll", + "system.data.datasetextensions.4.5.0.nupkg.sha512", + "system.data.datasetextensions.nuspec", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "System.Diagnostics.DiagnosticSource/8.0.0": { + "sha512": "c9xLpVz6PL9lp/djOWtk5KPDZq3cSYpmXoJQY524EOtuFl5z9ZtsotpsyrDW40U1DRnQSYvcPKEUV0X//u6gkQ==", + "type": "package", + "path": "system.diagnostics.diagnosticsource/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/System.Diagnostics.DiagnosticSource.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/System.Diagnostics.DiagnosticSource.targets", + "lib/net462/System.Diagnostics.DiagnosticSource.dll", + "lib/net462/System.Diagnostics.DiagnosticSource.xml", + "lib/net6.0/System.Diagnostics.DiagnosticSource.dll", + "lib/net6.0/System.Diagnostics.DiagnosticSource.xml", + "lib/net7.0/System.Diagnostics.DiagnosticSource.dll", + "lib/net7.0/System.Diagnostics.DiagnosticSource.xml", + "lib/net8.0/System.Diagnostics.DiagnosticSource.dll", + "lib/net8.0/System.Diagnostics.DiagnosticSource.xml", + "lib/netstandard2.0/System.Diagnostics.DiagnosticSource.dll", + "lib/netstandard2.0/System.Diagnostics.DiagnosticSource.xml", + "system.diagnostics.diagnosticsource.8.0.0.nupkg.sha512", + "system.diagnostics.diagnosticsource.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Diagnostics.EventLog/8.0.0": { + "sha512": "fdYxcRjQqTTacKId/2IECojlDSFvp7LP5N78+0z/xH7v/Tuw5ZAxu23Y6PTCRinqyu2ePx+Gn1098NC6jM6d+A==", + "type": "package", + "path": "system.diagnostics.eventlog/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/System.Diagnostics.EventLog.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/System.Diagnostics.EventLog.targets", + "lib/net462/System.Diagnostics.EventLog.dll", + "lib/net462/System.Diagnostics.EventLog.xml", + "lib/net6.0/System.Diagnostics.EventLog.dll", + "lib/net6.0/System.Diagnostics.EventLog.xml", + "lib/net7.0/System.Diagnostics.EventLog.dll", + "lib/net7.0/System.Diagnostics.EventLog.xml", + "lib/net8.0/System.Diagnostics.EventLog.dll", + "lib/net8.0/System.Diagnostics.EventLog.xml", + "lib/netstandard2.0/System.Diagnostics.EventLog.dll", + "lib/netstandard2.0/System.Diagnostics.EventLog.xml", + "runtimes/win/lib/net6.0/System.Diagnostics.EventLog.Messages.dll", + "runtimes/win/lib/net6.0/System.Diagnostics.EventLog.dll", + "runtimes/win/lib/net6.0/System.Diagnostics.EventLog.xml", + "runtimes/win/lib/net7.0/System.Diagnostics.EventLog.Messages.dll", + "runtimes/win/lib/net7.0/System.Diagnostics.EventLog.dll", + "runtimes/win/lib/net7.0/System.Diagnostics.EventLog.xml", + "runtimes/win/lib/net8.0/System.Diagnostics.EventLog.Messages.dll", + "runtimes/win/lib/net8.0/System.Diagnostics.EventLog.dll", + "runtimes/win/lib/net8.0/System.Diagnostics.EventLog.xml", + "system.diagnostics.eventlog.8.0.0.nupkg.sha512", + "system.diagnostics.eventlog.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Memory/4.5.4": { + "sha512": "1MbJTHS1lZ4bS4FmsJjnuGJOu88ZzTT2rLvrhW7Ygic+pC0NWA+3hgAen0HRdsocuQXCkUTdFn9yHJJhsijDXw==", + "type": "package", + "path": "system.memory/4.5.4", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/net461/System.Memory.dll", + "lib/net461/System.Memory.xml", + "lib/netcoreapp2.1/_._", + "lib/netstandard1.1/System.Memory.dll", + "lib/netstandard1.1/System.Memory.xml", + "lib/netstandard2.0/System.Memory.dll", + "lib/netstandard2.0/System.Memory.xml", + "ref/netcoreapp2.1/_._", + "system.memory.4.5.4.nupkg.sha512", + "system.memory.nuspec", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "System.Runtime.CompilerServices.Unsafe/6.0.0": { + "sha512": "/iUeP3tq1S0XdNNoMz5C9twLSrM/TH+qElHkXWaPvuNOt+99G75NrV0OS2EqHx5wMN7popYjpc8oTjC1y16DLg==", + "type": "package", + "path": "system.runtime.compilerservices.unsafe/6.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/netcoreapp2.0/System.Runtime.CompilerServices.Unsafe.targets", + "buildTransitive/netcoreapp3.1/_._", + "lib/net461/System.Runtime.CompilerServices.Unsafe.dll", + "lib/net461/System.Runtime.CompilerServices.Unsafe.xml", + "lib/net6.0/System.Runtime.CompilerServices.Unsafe.dll", + "lib/net6.0/System.Runtime.CompilerServices.Unsafe.xml", + "lib/netcoreapp3.1/System.Runtime.CompilerServices.Unsafe.dll", + "lib/netcoreapp3.1/System.Runtime.CompilerServices.Unsafe.xml", + "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll", + "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.xml", + "system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512", + "system.runtime.compilerservices.unsafe.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Text.Encodings.Web/8.0.0": { + "sha512": "yev/k9GHAEGx2Rg3/tU6MQh4HGBXJs70y7j1LaM1i/ER9po+6nnQ6RRqTJn1E7Xu0fbIFK80Nh5EoODxrbxwBQ==", + "type": "package", + "path": "system.text.encodings.web/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/System.Text.Encodings.Web.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/System.Text.Encodings.Web.targets", + "lib/net462/System.Text.Encodings.Web.dll", + "lib/net462/System.Text.Encodings.Web.xml", + "lib/net6.0/System.Text.Encodings.Web.dll", + "lib/net6.0/System.Text.Encodings.Web.xml", + "lib/net7.0/System.Text.Encodings.Web.dll", + "lib/net7.0/System.Text.Encodings.Web.xml", + "lib/net8.0/System.Text.Encodings.Web.dll", + "lib/net8.0/System.Text.Encodings.Web.xml", + "lib/netstandard2.0/System.Text.Encodings.Web.dll", + "lib/netstandard2.0/System.Text.Encodings.Web.xml", + "runtimes/browser/lib/net6.0/System.Text.Encodings.Web.dll", + "runtimes/browser/lib/net6.0/System.Text.Encodings.Web.xml", + "runtimes/browser/lib/net7.0/System.Text.Encodings.Web.dll", + "runtimes/browser/lib/net7.0/System.Text.Encodings.Web.xml", + "runtimes/browser/lib/net8.0/System.Text.Encodings.Web.dll", + "runtimes/browser/lib/net8.0/System.Text.Encodings.Web.xml", + "system.text.encodings.web.8.0.0.nupkg.sha512", + "system.text.encodings.web.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Text.Json/8.0.0": { + "sha512": "OdrZO2WjkiEG6ajEFRABTRCi/wuXQPxeV6g8xvUJqdxMvvuCCEk86zPla8UiIQJz3durtUEbNyY/3lIhS0yZvQ==", + "type": "package", + "path": "system.text.json/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "analyzers/dotnet/roslyn3.11/cs/System.Text.Json.SourceGeneration.dll", + "analyzers/dotnet/roslyn3.11/cs/cs/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/de/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/es/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/fr/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/it/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/ja/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/ko/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/pl/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/pt-BR/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/ru/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/tr/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/zh-Hans/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/zh-Hant/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/System.Text.Json.SourceGeneration.dll", + "analyzers/dotnet/roslyn4.0/cs/cs/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/de/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/es/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/fr/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/it/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/ja/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/ko/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/pl/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/pt-BR/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/ru/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/tr/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/zh-Hans/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/zh-Hant/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/System.Text.Json.SourceGeneration.dll", + "analyzers/dotnet/roslyn4.4/cs/cs/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/de/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/es/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/fr/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/it/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ja/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ko/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/pl/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/pt-BR/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ru/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/tr/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/zh-Hans/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/zh-Hant/System.Text.Json.SourceGeneration.resources.dll", + "buildTransitive/net461/System.Text.Json.targets", + "buildTransitive/net462/System.Text.Json.targets", + "buildTransitive/net6.0/System.Text.Json.targets", + "buildTransitive/netcoreapp2.0/System.Text.Json.targets", + "buildTransitive/netstandard2.0/System.Text.Json.targets", + "lib/net462/System.Text.Json.dll", + "lib/net462/System.Text.Json.xml", + "lib/net6.0/System.Text.Json.dll", + "lib/net6.0/System.Text.Json.xml", + "lib/net7.0/System.Text.Json.dll", + "lib/net7.0/System.Text.Json.xml", + "lib/net8.0/System.Text.Json.dll", + "lib/net8.0/System.Text.Json.xml", + "lib/netstandard2.0/System.Text.Json.dll", + "lib/netstandard2.0/System.Text.Json.xml", + "system.text.json.8.0.0.nupkg.sha512", + "system.text.json.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Tomlyn/0.19.0": { + "sha512": "GlI2o8R8jbZIaE+YX6uA/VoAOH7zIxYeqxDm7jHW2hqUhuB+q19oKold35FkMuv8IZDoCqsTMolaBv2eBLBmrQ==", + "type": "package", + "path": "tomlyn/0.19.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net8.0/Tomlyn.dll", + "lib/net8.0/Tomlyn.xml", + "lib/netstandard2.0/Tomlyn.dll", + "lib/netstandard2.0/Tomlyn.xml", + "logo.png", + "readme.md", + "tomlyn.0.19.0.nupkg.sha512", + "tomlyn.nuspec" + ] + } + }, + "projectFileDependencyGroups": { + "net8.0": [ + "CounterStrikeSharp.API >= 1.0.340" + ] + }, + "packageFolders": { + "/root/.nuget/packages/": {} + }, + "project": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "/root/cs2-super-powers/src/Cs2SuperPowers/Cs2SuperPowers.csproj", + "projectName": "Cs2SuperPowersPlugin", + "projectPath": "/root/cs2-super-powers/src/Cs2SuperPowers/Cs2SuperPowers.csproj", + "packagesPath": "/root/.nuget/packages/", + "outputPath": "/root/cs2-super-powers/src/Cs2SuperPowers/obj/", + "projectStyle": "PackageReference", + "configFilePaths": [ + "/root/.nuget/NuGet/NuGet.Config" + ], + "originalTargetFrameworks": [ + "net8.0" + ], + "sources": { + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "projectReferences": {} + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + } + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "dependencies": { + "CounterStrikeSharp.API": { + "target": "Package", + "version": "[1.0.340, )" + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "/usr/lib/dotnet/sdk/8.0.129/PortableRuntimeIdentifierGraph.json" + } + } + } +} \ No newline at end of file diff --git a/obj/project.nuget.cache b/obj/project.nuget.cache new file mode 100644 index 0000000..dc41d3b --- /dev/null +++ b/obj/project.nuget.cache @@ -0,0 +1,57 @@ +{ + "version": 2, + "dgSpecHash": "1KtfxQ9lBL5TWB2RIU02GzpC6CvxvF3J6VAPEJSeMxUm6URxUqqCEht3e11SKXOPO8Yyn73BP4NWeIyQhjkZbQ==", + "success": true, + "projectFilePath": "/root/cs2-super-powers/src/Cs2SuperPowers/Cs2SuperPowers.csproj", + "expectedPackageFiles": [ + "/root/.nuget/packages/counterstrikesharp.api/1.0.340/counterstrikesharp.api.1.0.340.nupkg.sha512", + "/root/.nuget/packages/mcmaster.netcore.plugins/1.4.0/mcmaster.netcore.plugins.1.4.0.nupkg.sha512", + "/root/.nuget/packages/microsoft.csharp/4.7.0/microsoft.csharp.4.7.0.nupkg.sha512", + "/root/.nuget/packages/microsoft.dotnet.apicompat.task/8.0.203/microsoft.dotnet.apicompat.task.8.0.203.nupkg.sha512", + "/root/.nuget/packages/microsoft.dotnet.platformabstractions/3.1.6/microsoft.dotnet.platformabstractions.3.1.6.nupkg.sha512", + "/root/.nuget/packages/microsoft.extensions.configuration/8.0.0/microsoft.extensions.configuration.8.0.0.nupkg.sha512", + "/root/.nuget/packages/microsoft.extensions.configuration.abstractions/8.0.0/microsoft.extensions.configuration.abstractions.8.0.0.nupkg.sha512", + "/root/.nuget/packages/microsoft.extensions.configuration.binder/8.0.0/microsoft.extensions.configuration.binder.8.0.0.nupkg.sha512", + "/root/.nuget/packages/microsoft.extensions.configuration.commandline/8.0.0/microsoft.extensions.configuration.commandline.8.0.0.nupkg.sha512", + "/root/.nuget/packages/microsoft.extensions.configuration.environmentvariables/8.0.0/microsoft.extensions.configuration.environmentvariables.8.0.0.nupkg.sha512", + "/root/.nuget/packages/microsoft.extensions.configuration.fileextensions/8.0.0/microsoft.extensions.configuration.fileextensions.8.0.0.nupkg.sha512", + "/root/.nuget/packages/microsoft.extensions.configuration.json/8.0.0/microsoft.extensions.configuration.json.8.0.0.nupkg.sha512", + "/root/.nuget/packages/microsoft.extensions.configuration.usersecrets/8.0.0/microsoft.extensions.configuration.usersecrets.8.0.0.nupkg.sha512", + "/root/.nuget/packages/microsoft.extensions.dependencyinjection/8.0.0/microsoft.extensions.dependencyinjection.8.0.0.nupkg.sha512", + "/root/.nuget/packages/microsoft.extensions.dependencyinjection.abstractions/8.0.0/microsoft.extensions.dependencyinjection.abstractions.8.0.0.nupkg.sha512", + "/root/.nuget/packages/microsoft.extensions.dependencymodel/6.0.0/microsoft.extensions.dependencymodel.6.0.0.nupkg.sha512", + "/root/.nuget/packages/microsoft.extensions.diagnostics/8.0.0/microsoft.extensions.diagnostics.8.0.0.nupkg.sha512", + "/root/.nuget/packages/microsoft.extensions.diagnostics.abstractions/8.0.0/microsoft.extensions.diagnostics.abstractions.8.0.0.nupkg.sha512", + "/root/.nuget/packages/microsoft.extensions.fileproviders.abstractions/8.0.0/microsoft.extensions.fileproviders.abstractions.8.0.0.nupkg.sha512", + "/root/.nuget/packages/microsoft.extensions.fileproviders.physical/8.0.0/microsoft.extensions.fileproviders.physical.8.0.0.nupkg.sha512", + "/root/.nuget/packages/microsoft.extensions.filesystemglobbing/8.0.0/microsoft.extensions.filesystemglobbing.8.0.0.nupkg.sha512", + "/root/.nuget/packages/microsoft.extensions.hosting/8.0.0/microsoft.extensions.hosting.8.0.0.nupkg.sha512", + "/root/.nuget/packages/microsoft.extensions.hosting.abstractions/8.0.0/microsoft.extensions.hosting.abstractions.8.0.0.nupkg.sha512", + "/root/.nuget/packages/microsoft.extensions.localization.abstractions/8.0.3/microsoft.extensions.localization.abstractions.8.0.3.nupkg.sha512", + "/root/.nuget/packages/microsoft.extensions.logging/8.0.0/microsoft.extensions.logging.8.0.0.nupkg.sha512", + "/root/.nuget/packages/microsoft.extensions.logging.abstractions/8.0.0/microsoft.extensions.logging.abstractions.8.0.0.nupkg.sha512", + "/root/.nuget/packages/microsoft.extensions.logging.configuration/8.0.0/microsoft.extensions.logging.configuration.8.0.0.nupkg.sha512", + "/root/.nuget/packages/microsoft.extensions.logging.console/8.0.0/microsoft.extensions.logging.console.8.0.0.nupkg.sha512", + "/root/.nuget/packages/microsoft.extensions.logging.debug/8.0.0/microsoft.extensions.logging.debug.8.0.0.nupkg.sha512", + "/root/.nuget/packages/microsoft.extensions.logging.eventlog/8.0.0/microsoft.extensions.logging.eventlog.8.0.0.nupkg.sha512", + "/root/.nuget/packages/microsoft.extensions.logging.eventsource/8.0.0/microsoft.extensions.logging.eventsource.8.0.0.nupkg.sha512", + "/root/.nuget/packages/microsoft.extensions.options/8.0.0/microsoft.extensions.options.8.0.0.nupkg.sha512", + "/root/.nuget/packages/microsoft.extensions.options.configurationextensions/8.0.0/microsoft.extensions.options.configurationextensions.8.0.0.nupkg.sha512", + "/root/.nuget/packages/microsoft.extensions.primitives/8.0.0/microsoft.extensions.primitives.8.0.0.nupkg.sha512", + "/root/.nuget/packages/scrutor/4.2.2/scrutor.4.2.2.nupkg.sha512", + "/root/.nuget/packages/serilog/3.1.1/serilog.3.1.1.nupkg.sha512", + "/root/.nuget/packages/serilog.extensions.logging/8.0.0/serilog.extensions.logging.8.0.0.nupkg.sha512", + "/root/.nuget/packages/serilog.sinks.console/5.0.0/serilog.sinks.console.5.0.0.nupkg.sha512", + "/root/.nuget/packages/serilog.sinks.file/5.0.0/serilog.sinks.file.5.0.0.nupkg.sha512", + "/root/.nuget/packages/system.buffers/4.5.1/system.buffers.4.5.1.nupkg.sha512", + "/root/.nuget/packages/system.data.datasetextensions/4.5.0/system.data.datasetextensions.4.5.0.nupkg.sha512", + "/root/.nuget/packages/system.diagnostics.diagnosticsource/8.0.0/system.diagnostics.diagnosticsource.8.0.0.nupkg.sha512", + "/root/.nuget/packages/system.diagnostics.eventlog/8.0.0/system.diagnostics.eventlog.8.0.0.nupkg.sha512", + "/root/.nuget/packages/system.memory/4.5.4/system.memory.4.5.4.nupkg.sha512", + "/root/.nuget/packages/system.runtime.compilerservices.unsafe/6.0.0/system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512", + "/root/.nuget/packages/system.text.encodings.web/8.0.0/system.text.encodings.web.8.0.0.nupkg.sha512", + "/root/.nuget/packages/system.text.json/8.0.0/system.text.json.8.0.0.nupkg.sha512", + "/root/.nuget/packages/tomlyn/0.19.0/tomlyn.0.19.0.nupkg.sha512" + ], + "logs": [] +} \ No newline at end of file