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; } }